Форум программистов, компьютерный форум CyberForum.ru

Глючит ListView - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Регистрация широковещательного приемника http://www.cyberforum.ru/android-dev/thread1465086.html
Привет, у меня есть приемник: public class Broad extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, DoActivity.class); int val = intent.getIntExtra("INT", 0); i.putExtra("INT", val); context.startActivity(i);
Android Не происходит запись видео Здравствуйте, хочу записать видео, программно открываю приложение работы с камерой, код ниже: Intent cameraIntent1 = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); cameraIntent1.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(videoFile)); cameraIntent1.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); //cameraIntent1.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 200);... http://www.cyberforum.ru/android-dev/thread1465071.html
Android Android Studio, Web browser
Здравствуйте. Я пишу программу под ОС Android на android studio. Программа должна зайти на сайт считать от туда информацию и обработать её. Для начала я решил создать свой Web браузер. Я нашел замечательную статью: http://developer.alexanderklimov.ru/android/mybrowser.php Создав по ней приложение оно даже не загрузившись сразу закрывается выдавая ошибку "В приложении MyBrowser произошла...
Android Полностью убить приложение
Я в методе onBackPressed прописал Android. is. killProcess(android.os.Process.myPid()) и в итоге получаю при выходе из приложения захожу туда где хранится информация о незавершенных приложениях и вижу свое приложение оно выделилось там полностью черным. А как его вообще полностью убить чтобы оно вообще не висело и не отображалось в незавершенных приложениях??Как это сделать чтопрописать??
Android Рисовка на экран. (среда разработки - Android Studio) http://www.cyberforum.ru/android-dev/thread1464718.html
Доброго времени суток! Подскажите, пожалуйста. Хочу писать для андроида приложения с собственным графически интерфейсом. Выбрал Android Studio. Поражает хорошо проработанные Layout-ы, всё очень удобно можно расставлять, НО! Всё это конечно хорошо. Вопрос: а можно ли работать непосредственно с экраном Без Layout-ов и ImageView? А так, как скажем в старой доброй винде - взяли окно, написали для...
Android Форматирование времени Добрый день, Нужно мне было из String времени достать отдельно дату и отдельно время. День-месяц-год вытянуть получилось, а вот время - нет. Пример, как хронится дата: 2015-05-06 11:06:00 System.out.println(list.get(i).getStartDate()); SimpleDateFormat stf = new SimpleDateFormat("HH:mm"); String startTime = list.get(i).getStartDate(); try { подробнее

Показать сообщение отдельно
motoroller
2 / 2 / 1
Регистрация: 01.05.2012
Сообщений: 116

Глючит ListView - Android

01.06.2015, 18:36. Просмотров 247. Ответов 5
Метки (Все метки)

Получаю данные с сервера)
отображаю через ListView проблем нет. Но по нажатию по item listview хочу показать скрытое textview внутри item,
вроде бы просто, но дико глючит. По нажатию открывает не только скрытый textview в текущем item, но еще и другие почему равно через каждые 6 штук?

Скажите в чем может быть проблема?

Такк формируется вывод новости, при этом body - скрыто
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/rl"
        android:padding="20dp">
 
        <!-- Image -->
        <com.android.volley.toolbox.NetworkImageView
            android:id="@+id/thumbnail"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_alignParentLeft="true"
            android:layout_marginRight="8dp"
            android:background="@drawable/news_image_border" />
 
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_centerVertical="true">
 
            <!-- Title -->
            <TextView
                android:layout_marginLeft="100dp"
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="15dp"
                android:textStyle="bold"
                android:textColor="@color/actionBar_backround"/>
 
            <!-- Date -->
            <TextView
                android:layout_marginLeft="100dp"
                android:id="@+id/date"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/title"
                android:layout_marginTop="1dip"
                android:textSize="14dp" />
 
            </RelativeLayout>
 
        </RelativeLayout>
 
    <!-- Body -->
    <TextView
        android:id="@+id/body"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/rl"
        android:textColor="#000"
        android:textSize="16dp"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingBottom="20dp"
        android:visibility="gone" />
 
</RelativeLayout>
Код фрагмента: в котором происходит загрузка данных с сайта и отображение. А так идет клик по listitem, после которого открывается body не только в текущем Item но и в других(((

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package ru.animalface.app;
 
import android.app.Fragment;
import android.app.ProgressDialog;
import android.os.Bundle;
 
import android.text.Layout;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
 
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.Volley;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.sql.Array;
import java.util.ArrayList;
import java.util.List;
 
import ru.animalface.app.adapter.VolleyListNewsAdapter;
import ru.animalface.app.model.News;
 
 
public class NewsFragment extends Fragment {
 
    private static List<News> newsList = new ArrayList<News>();
    private static ListView listView;
    private static VolleyListNewsAdapter volleyAdapter;
    private static Integer currentPage;
    private static Boolean loading;
    private static View rootView;
    // Progress
    private ProgressDialog pDialog;
 
    public NewsFragment(){}
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
            rootView = inflater.inflate(R.layout.fragment_news, container, false);
 
            pDialog = ProgressDialog.show(getActivity(), null, getResources().getString(R.string.loading), true);
            loading = true;
            currentPage = 0;
 
            listView = (ListView) rootView.findViewById(R.id.list_news);
            newsList = new ArrayList<News>();
            volleyAdapter = new VolleyListNewsAdapter(getActivity(), newsList);
            listView.setAdapter(volleyAdapter);
 
            RequestQueue queue = Volley.newRequestQueue(getActivity());
            JsonArrayRequest newsReqest = new JsonArrayRequest("https://animalface.ru/mobile/news/", createMyReqSuccessListener(), createMyReqErrorListener());
            // Adding request to request queue
            queue.add(newsReqest);
 
            // По клику новости показываем текст
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    //News n =  newsList.get(position);
 
 
 
 
 
                    //Log.v("My Project", "Позиция: " + position);
 
                   // News news = new News();
 
                    //news.setTitle(n.getTitle());
                    //news.setImage(n.getImage());
                    //news.setDate(n.getDate());
                    //news.setBody(n.getBody());
                    //news.setVisible(true);
 
                    //newsList.set(position, news);
                    //volleyAdapter.notifyDataSetChanged();
 
 
                   // volleyAdapter = new VolleyListNewsAdapter(getActivity(), newsList);
                    //listView.setAdapter(volleyAdapter);
 
                    //Log.v("My Project", "Массив: " + newsList);
 
                    TextView current = (TextView) view.findViewById(R.id.body);
                    current.setVisibility(TextView.VISIBLE);
                }
            });
 
 
            return rootView;
        }
 
    private Response.Listener<JSONArray> createMyReqSuccessListener() {
        return new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                pDialog.hide();
 
                // если есть данные то увелчиваем запрос на вывод страниц
                if (response.length() > 0) {
 
                    loading = true;
                    currentPage += 7;
 
                    for (int i = 0; i < response.length(); i++) {
                        try {
                            JSONObject obj = response.getJSONObject(i);
                            News news = new News();
                            news.setTitle(obj.getString("title"));
                            news.setImage(obj.getString("image"));
                            news.setDate(obj.getString("datePrint"));
                            news.setBody(obj.getString("body"));
                            news.setVisible(false);
                            newsList.add(news);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                    // notifying list adapter about data changes
                    // so that it renders the list view with updated data
                    volleyAdapter.notifyDataSetChanged();
 
                } else {
                    loading = false;
                }
            }
        };
    }
 
    private Response.ErrorListener createMyReqErrorListener() {
        return new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                pDialog.hide();
                Toast.makeText(getActivity(), R.string.error_connection, Toast.LENGTH_LONG).show();
            }
        };
    }
}
Класс адаптера

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package ru.animalface.app.adapter;
 
import ru.animalface.app.R;
import ru.animalface.app.app.AppController;
import ru.animalface.app.model.News;
 
import java.util.List;
 
import android.app.Activity;
import android.content.Context;
import android.text.Html;
import android.text.SpannableString;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.DecelerateInterpolator;
import android.widget.BaseAdapter;
import android.widget.TextView;
 
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
 
public class VolleyListNewsAdapter extends BaseAdapter {
    private Activity activity;
    private LayoutInflater inflater;
    private List<News> newsItems;
 
    ImageLoader imageLoader = AppController.getInstance().getImageLoader();
 
    public VolleyListNewsAdapter(Activity activity, List<News> newsItems) {
        this.activity = activity;
        this.newsItems = newsItems;
    }
 
    @Override
    public int getCount() {
        return newsItems.size();
    }
 
    @Override
    public Object getItem(int location) {
        return newsItems.get(location);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
 
        if (inflater == null)
            inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
        if (convertView == null)
            convertView = inflater.inflate(R.layout.drawer_list_news, null);
 
        if (imageLoader == null)
            imageLoader = AppController.getInstance().getImageLoader();
 
        // getting news data for the row
        News n = newsItems.get(position);
        TextView body = (TextView) convertView.findViewById(R.id.body);
 
        if(n.getVisible() == false) {
 
            TextView title = (TextView) convertView.findViewById(R.id.title);
            TextView date = (TextView) convertView.findViewById(R.id.date);
            NetworkImageView thumbNail = (NetworkImageView) convertView.findViewById(R.id.thumbnail);
 
            // title
            title.setText(n.getTitle());
 
            // body
            body.setText(Html.fromHtml(n.getBody()));
 
            // date
            date.setText(n.getDate());
 
            // thumbnail image
            thumbNail.setImageUrl(n.getImage(), imageLoader);
 
        } else {
            // body
            body.setVisibility(View.VISIBLE);
        }
 
        return convertView;
    }
 
}
Класс модели

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package ru.animalface.app.model;
 
public class News {
    private String title, image, date, body;
    private Boolean visible;
 
    public News() {}
 
    public News(Boolean visible) {
        this.visible = visible;
    }
 
    public News(String title, String image, String date, String body, Boolean visible) {
        this.title = title;
        this.image = image;
        this.date = date;
        this.body = body;
        this.visible = visible;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public String getImage() {
        return image;
    }
 
    public void setImage(String image) {
        this.image = image;
    }
 
    public String getDate() {
        return date;
    }
 
    public void setDate(String date) {
        this.date = date;
    }
 
    public String getBody() {
        return body;
    }
 
    public void setBody(String body) {
        this.body = body;
    }
 
    public Boolean getVisible() {
        return visible;
    }
 
    public void setVisible(Boolean visible) {
        this.visible = visible;
    }
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru