Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Мобильная разработка (Android)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2016, 01:26   #11
sergei0194
Новичок
Джуниор
 
Регистрация: 22.10.2016
Сообщений: 17
По умолчанию

New man, нет это не верное решение. Про clear(); я писал ещё в заголовке этой темы. Да и в общем, мне не нужно очищать список, мне нужно добавлять данные уже в существующий.
sergei0194 вне форума Ответить с цитированием
Старый 23.10.2016, 01:51   #12
sergei0194
Новичок
Джуниор
 
Регистрация: 22.10.2016
Сообщений: 17
По умолчанию

pompiduskus, есть хорошие изменения Внутри активности, в методе:
Код:
public void response(ArrayList<ResponseMsgArray> response) {

        int count = response.size() - 1;
        if(count > 0) {
            getEndMsgId = response.get(count).getNewMsg();
        }
            if(sAdapter == null) {
                sAdapter = new ChatMsgAdapter(this, response);
                listView.setAdapter(sAdapter);
                Log.d(LOG_TAG, "Array:: setAdapter" + getEndMsgId);
            } else {
                sAdapter.setData(response);
                Log.d(LOG_TAG, "Array:: setData" + getEndMsgId);
            }
    }
я добавил int count для проверки последнего ID сообщения. Затем внутри активности добавил статический метод
Код:
public static void endMsg(int end_msg) {
        getEndMsgId = end_msg;
    }
А данные в метод передаю в классе ResponseMsgJson(). В общем, сейчас работает всё отлично) Изменил всего пару классов, сейчас выложу их....может кому в будущем пригодится Ну и конечно же я готов и к критике) Правильно ли организована идея которая по крайней мере работает?
sergei0194 вне форума Ответить с цитированием
Старый 23.10.2016, 01:52   #13
sergei0194
Новичок
Джуниор
 
Регистрация: 22.10.2016
Сообщений: 17
По умолчанию

Моя активность:
Код:
public class FriendMsgActivity extends AppCompatActivity implements ResponseCallback {

    private ListView listView;
    String LOG_TAG = "FriendLOG";

    EditText editText;
    Handler mHandler;

    ChatMsgAdapter sAdapter;

    static int getEndMsgId;
    protected String LV_KEY = Auth.key;
    protected int LV_USID = Integer.parseInt(Auth.id);
    protected int GET_ID = Integer.parseInt(FriendActivity.get_id);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_friend_msg);
        setTitle(get_login);

        getEndMsgId = 0;
        listView = (ListView) findViewById(R.id.lvFriendMsg);
        editText = (EditText) findViewById(R.id.form_input);
    }

    public static void endMsg(int end_msg) {
        getEndMsgId = end_msg;
    }

    @Override
    public void response(ArrayList<ResponseMsgArray> response) {

        int count = response.size() - 1;
        if(count > 0) {
            getEndMsgId = response.get(count).getNewMsg();
        }
            if(sAdapter == null) {
                sAdapter = new ChatMsgAdapter(this, response);
                listView.setAdapter(sAdapter);
                Log.d(LOG_TAG, "Array:: setAdapter" + getEndMsgId);
            } else {
                sAdapter.setData(response);
                Log.d(LOG_TAG, "Array:: setData" + getEndMsgId);
            }
    }

    public void sendMsg(View v) {

        String msg = null;
        String msg_id = null;
        String msg_time = null;
        String msg_id_us = null;
        int msg_end_id = getEndMsgId + 1;

        ResponseMsgArray rms = new ResponseMsgArray();
        ArrayList data = new ArrayList();

        editText = (EditText) findViewById(R.id.form_input);
        String form_input_msg = editText.getText().toString();

        if (!form_input_msg.equals("")) {

            rms.setMsg("fghfgh");
            data.add(rms);
            sAdapter.notifyDataSetChanged();
            GetMsg getMsg = new GetMsg();
            getMsg.SendMsg(getApplicationContext(), GET_ID, form_input_msg);
        }
    }

    class RefreshActivity extends Thread {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mHandler.postDelayed(this, 5000);
                    UpdateMsg updateMsg = new UpdateMsg(FriendMsgActivity.this, getEndMsgId);
                    updateMsg.execute();
                }
            });
        }
    }

    @Override
    protected void onStart() {
        super.onStart();

        mHandler = new Handler();
        mHandler.post(new RefreshActivity());
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        Log.d(LOG_TAG, "MainActivity: onStart()");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mHandler.removeCallbacksAndMessages(null);
        Log.d(LOG_TAG, "MainActivity: onDestroy()");
    }


}
ResponseMsgJson:
Код:
public class ResponseMsgJson {

    String LOG_TAG = "FriendLOG";

    public ArrayList<ResponseMsgArray> parseData(String response) {

        ArrayList<ResponseMsgArray> data = new ArrayList<>();
        JSONObject dataJsonObj = null;

        try {
            dataJsonObj = new JSONObject(response);
            JSONArray chat = dataJsonObj.getJSONArray("data");

            for (int i = 0; i < chat.length(); i++) {
                ResponseMsgArray rms = new ResponseMsgArray();

                JSONObject msgList = chat.getJSONObject(i);
                String error = msgList.getString("error");

                String msg;
                String msg_id;
                String msg_time;
                String msg_id_us;
                int msg_end_id;

                if (!error.equals("0")) {

                    if (error.equals("1")) {
                        Log.d(LOG_TAG, "Ошибка 1!..");
                    }
                    if (error.equals("2")) {
                        Log.d(LOG_TAG, "Ошибка 2!..");
                    }
                    if (error.equals("3")) {
                        Log.d(LOG_TAG, "Новых сообщений нет!..");
                    }

                } else {

                    msg = msgList.getString("msg");
                    msg_id = msgList.getString("msg_id");
                    msg_time = msgList.getString("msg_time");
                    msg_id_us = msgList.getString("msg_id_user");
                    msg_end_id = msgList.getInt("endMsg");

                    rms.setMsg(msg); // сообщение
                    rms.setMsg_id(msg_id); // id сообщения
                    rms.setNewMsg(msg_end_id); // id последнего сообщения
                    rms.setMsg_time(msg_time); // время сообщений
                    rms.setMsg_id_us(msg_id_us); // id юзеров текущего чата
                    data.add(rms);

                    FriendMsgActivity.endMsg(msg_end_id);
                    Log.d(LOG_TAG, "Данные получены..");
                }

            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return data;
    }
}

Последний раз редактировалось sergei0194; 23.10.2016 в 02:00.
sergei0194 вне форума Ответить с цитированием
Старый 23.10.2016, 02:29   #14
sergei0194
Новичок
Джуниор
 
Регистрация: 22.10.2016
Сообщений: 17
По умолчанию

Хотелось бы добавить что, при не правильной конфигурации PHP скриптов, тоже возможно "дублирование" данных в адаптере...спасибо всем тем кто поддержал
sergei0194 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
значения массива считывается с файла, а повторные элементы этого массива выводятся во 2 файл C++ carrie bradshaw Помощь студентам 5 03.02.2014 09:13
записать в файл массив, а в другой файл вывести повторные значения элементов массива С++ carrie bradshaw Помощь студентам 3 01.02.2014 23:27
Не выводит значения Rglore Microsoft Office Excel 9 09.11.2012 10:19
QT: QSqlQueryModel::setData() driims Qt и кроссплатформенное программирование С/С++ 0 02.06.2009 14:48
Не выводит значения из базы данных Linel PHP 13 26.02.2009 12:47