Android получить другой идентификатор на элемент списка - PullRequest
0 голосов
/ 14 октября 2011

У меня небольшая проблема с отправкой правильного идентификатора в другое мероприятие в качестве дополнительного. Я получаю идентификатор из базы данных, которую я отправляю новому действию, чтобы я мог получить правильные данные.Но проблема в том, что мой код отправляет только последний идентификатор, который находится в массиве.Как я могу это исправить?

Вот код, который я использую:

for(cursorTitle.move(0); cursorTitle.moveToNext(); cursorTitle.isAfterLast()) {

     if (vf != null) {
        vf.removeAllViews();
     }                                      

     text = cursorTitle.getString(cursorTitle.getColumnIndex("title"));
     cardsCount = cursorTitle.getString(cursorTitle.getColumnIndex("cardsCount"));
     collId = Integer.parseInt(cursorTitle.getString(cursorTitle.getColumnIndex("objectId")));
     Log.i("CollID","Collection ID : "+collId);
     b = BitmapFactory.decodeFile("/sdcard/7073d92dce10884554d7e047f1c51cb6.jpg", null); 
     array = new ArrayList<Integer>();
     array.add(collId);
     vf = new ViewFlipper(MyCollectionList.this);
     myListView = new ListView(MyCollectionList.this);                                      

     hm = new HashMap<String, Object>();
     hm.put(IMAGE, b);
     hm.put(TITLE, text);
     hm.put(CARDS_COUNT, cardsCount +" Stampii");
     items.add(hm);

     final SimpleAdapter adapter = new SimpleAdapter(MyCollectionList.this, items, R.layout.main_listview,
     new String[]{TITLE, CARDS_COUNT, IMAGE}, new int[]{ R.id.main_name, R.id.main_info, R.id.main_img});
     myListView.setAdapter(adapter); 

     myListView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> a, View v, int position, long id) 
         {
          Intent previewMessage = new Intent(getParent(), MyCollectionId.class);
          previewMessage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
          TabGroupActivity parentActivity = (TabGroupActivity)getParent();
          previewMessage.putExtra("collection_id", array.get(position));
          parentActivity.startChildActivity("MyCollectionId", previewMessage);
         }
    });
}

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 14 октября 2011

Вы создаете новый ArrayList в каждой итерации, а затем присваиваете ему только одно значение. Я не думаю, что это то, что вы хотели. Вы должны создать экземпляр ArrayList вне вашего цикла. Вы также захотите переместить все остальные одноразовые коды инициализации (ListView, SimpleAdapter и т. Д.) Из цикла.

1 голос
/ 14 октября 2011

Поместите array = new ArrayList<Integer>(); за пределы цикла.

как

  array = new ArrayList<Integer>();
  for(cursorTitle.move(0); cursorTitle.moveToNext(); cursorTitle.isAfterLast()) {
  { 
   // your stuff

   array.add(collId);

   // your stuff
  }
1 голос
/ 14 октября 2011

То, что я получил, это то, что вам нужно заполнить просмотр списка записями, которые вы получаете в курсоре. Вы заполняете свой просмотр списка в каждой итерации цикла for, и это является причиной проблемы. Я думаю, что следующее должно работать для вас. (Необходимые изменения для переменных должны быть сделаны соответственно.)

Попробуйте это:

vf = new ViewFlipper(MyCollectionList.this);
myListView = new ListView(MyCollectionList.this);
array = new ArrayList<Integer>();
hm = new HashMap<String, Object>();
for(cursorTitle.move(0); cursorTitle.moveToNext(); cursorTitle.isAfterLast()) {

         if (vf != null) {
            vf.removeAllViews();
         }                                      

         text = cursorTitle.getString(cursorTitle.getColumnIndex("title"));
         cardsCount = cursorTitle.getString(cursorTitle.getColumnIndex("cardsCount"));
         collId = Integer.parseInt(cursorTitle.getString(cursorTitle.getColumnIndex("objectId")));
         Log.i("CollID","Collection ID : "+collId);
         b = BitmapFactory.decodeFile("/sdcard/7073d92dce10884554d7e047f1c51cb6.jpg", null);              
         array.add(collId);


         hm.put(IMAGE, b);
         hm.put(TITLE, text);
         hm.put(CARDS_COUNT, cardsCount +" Stampii");
         items.add(hm);
}

    final SimpleAdapter adapter = new SimpleAdapter(MyCollectionList.this, items, R.layout.main_listview,
         new String[]{TITLE, CARDS_COUNT, IMAGE}, new int[]{ R.id.main_name, R.id.main_info, R.id.main_img});
         myListView.setAdapter(adapter);                                    
         myListView.setOnItemClickListener(new OnItemClickListener() {
         public void onItemClick(AdapterView<?> a, View v, int position, long id) 
         {
              Intent previewMessage = new Intent(getParent(), MyCollectionId.class);
              previewMessage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
              TabGroupActivity parentActivity = (TabGroupActivity)getParent();
              previewMessage.putExtra("collection_id", array.get(position));
              parentActivity.startChildActivity("MyCollectionId", previewMessage);
         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...