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

Как добраться до объекта - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Как вместо названия Activity подставить элемент ListView? http://www.cyberforum.ru/android-dev/thread1455094.html
В приложении 2 Activity - MainActivity и DetailActivity. При запуске приложения открывается MainActivity, где отображается список из ListView. При выборе любого элемента ListView открывается DetailActiviry c WebView, где отображается соответствующая вебстраница. Как сделать так, чтобы в ActionBar вместо названия Activity выводилось название выбранного элемента ListView? А по-человечески:...
Android Как предотвратить множественную загрузку onCreateView в фрагменте Как предотвратить множественную загрузку onCreateView в фрагменте? Запускаю фрагмет он подгружает данные с сервера. При попороте экрана загрука идет снова. Как это предотвратить? Запись в манифесте : android:configChanges="orientation" Не помогает. Скажи как быть? http://www.cyberforum.ru/android-dev/thread1455027.html
Android Приложение работает не со всеми версиями на Genymotion
Коллеги, помогите. Не могу понять, просмотрел уже все темы, почему приложение запускается не со всеми версиями. Даже есть такое как на Nexus 4 4.4.4 API 19 не запускается а на Nexus 5 4.4.4 API 19 запускается. С чего начинать копать (это мое первое приложение). Добавлено через 1 минуту Забыл сказать, что первый layuot запускается всегда, а второй от кнопки с первого нет.
Не получается создать запрос Volley в фрагменте Android
package ru.animalface.app; import android.app.Fragment; import android.app.ProgressDialog; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;
Android Вызов нестатического метода из другого класса http://www.cyberforum.ru/android-dev/thread1454935.html
Здравствуйте. Подскажите, как можно вызвать нестатистический метод из другого класса. 1.Этот другой класс нельзя наследовать тем классом, он уже унаследован от другого. 2.Манипуляции с контекстом не хочу использовать. 3.Через экземпляр класса вылетает ошибка. Какие есть варианты? Добавлено через 8 минут И я заметил, что статистические методы, не очень любят использовать. Почему?
Android Volley делает повторные запросы Скажите пожалуйста, установил библиотеку Volley. Сделал запрос, который принимает настройки. Все это висит в onCreate. Так вот когда я меню ориентацию телефона запрос снова происходит, подскажите как запретить делать это данной библиотеке. подробнее

Показать сообщение отдельно
motoroller
2 / 2 / 1
Регистрация: 01.05.2012
Сообщений: 116
23.05.2015, 16:29  [ТС]     Как добраться до объекта
NewsFragment.XML

здесь происходит вывод новостей, проблем с этим нет. Но почему-то по клику у меня появляется текст не только от текущей новости но и от других новостей

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
package ru.animalface.app;
 
import android.app.Fragment;
import android.app.ProgressDialog;
import android.os.Bundle;
 
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
 
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.util.ArrayList;
import java.util.List;
 
import ru.animalface.app.adapter.VolleyListAdapter;
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 VolleyListAdapter volleyAdapter;
 
    // Progress
    private ProgressDialog pDialog;
 
    public NewsFragment(){}
 
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
            View rootView = inflater.inflate(R.layout.fragment_news, container, false);
 
            // Load only one time when fragment is loading
            if (savedInstanceState == null) {
 
                pDialog = ProgressDialog.show(getActivity(), null, "Загрузка данных ...", true);
                listView = (ListView) rootView.findViewById(R.id.list);
                volleyAdapter = new VolleyListAdapter(getActivity(), newsList);
                listView.setAdapter(volleyAdapter);
                RequestQueue queue = Volley.newRequestQueue(getActivity());
 
                JsonArrayRequest newsReqest = new JsonArrayRequest("http://animalface.ru/mobile/news", new Response.Listener<JSONArray>() {
                            @Override
                            public void onResponse(JSONArray response) {
                                pDialog.hide();
                                // Parsing json
 
                                Log.v("My Project", String.valueOf(response.length()));
 
                                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"));
                                        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();
                            }
                        }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        pDialog.hide();
                        Log.v("My Project", error.getMessage());
                    }
                });
 
                // Adding request to request queue
                queue.add(newsReqest);
 
            // Load only data second or more times
            } else {
                listView = (ListView) rootView.findViewById(R.id.list);
                volleyAdapter = new VolleyListAdapter(getActivity(), newsList);
                listView.setAdapter(volleyAdapter);
            }
 
            // По клику новости
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Log.v("My Project", String.valueOf(position));
                    //Log.v("My Project", String.valueOf(id));
                    view.findViewById(R.id.body).setVisibility(View.VISIBLE);
                }
            });
 
            return rootView;
        }
}
VolleyListAdapter

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
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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
 
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
 
public class VolleyListAdapter extends BaseAdapter {
    private Activity activity;
    private LayoutInflater inflater;
    private List<News> newsItems;
    ImageLoader imageLoader = AppController.getInstance().getImageLoader();
 
 
 
    public VolleyListAdapter(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();
        NetworkImageView thumbNail = (NetworkImageView) convertView
                .findViewById(R.id.thumbnail);
 
        TextView title = (TextView) convertView.findViewById(R.id.title);
        TextView date = (TextView) convertView.findViewById(R.id.date);
        TextView body = (TextView) convertView.findViewById(R.id.body);
 
        // getting news data for the row
        News n = newsItems.get(position);
 
        // thumbnail image
        thumbNail.setImageUrl(n.getImage(), imageLoader);
        
        // title
        title.setText(n.getTitle());
 
        // body
        body.setText(Html.fromHtml(n.getBody()));
 
        // date
        date.setText(n.getDate());
 
        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
package ru.animalface.app.model;
 
public class News {
    private String title, image, date, body;
 
    public News() {}
 
    public News(String title, String image, String date, String body) {
        this.title = title;
        this.image = image;
        this.date = date;
        this.body = body;
    }
 
    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;
    }
    
}
Вывод новостей

XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/news_bg" />
 
</RelativeLayout>
Вывод текущей новости

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>
Вроде бы все просто, и самое сложное работает корректно, то есть новости запрашиваются и выводятся с картинками, при выводе я скрываю текст новости, по клику на новость хочу чтобы ТОЛЬКО у текущей показывался текс.

Добавлено через 33 минуты
За основу я брал этот пример: http://www.androidhive.info/2014/07/...-using-volley/

Код так же там там скачать можно
Так я взял пример и добавил обработчик нажатия

Java
1
2
3
4
5
6
7
listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                view.findViewById(R.id.title).setVisibility(View.GONE);
 
                Log.d("my_project", "itemClick: position = " + position + ", id = " + id);
            }
        });
Проблема аналогичная, я скрываю title а он скрывается сразу у нескольких объектов а не только у текущего

Добавлено через 25 минут
Подскажите может быть эта проблема в библиотеке?

Потому что попробовал другой пример: https://github.com/ogrebgr/android_volley_examples

Сделал аналогичный обработчик и так данные скрываются сразу у нескольких объектов.

Добавлено через 15 минут
Пробовал так же:

Log.v("My Project", String.valueOf(position));
parent.getChildAt(position).setVisibility(View.GONE);

В логах выводится номер верный, то есть 1,2,3...
А вот исчезают строки не те или больше чем надо
 
Текущее время: 10:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru