2014-09-11 3 views
3

У меня есть адаптер массива, простирающийся от базового блока и использующий его с arraylist для хранения данных. Мне нужно обновить отдельный элемент. Поэтому мне нужно указать идентификатор для каждого элемента при добавлении в arraylist. Затем я его обновлю с set способом, как это:Arrayadapter пользовательский идентификатор

randomsList.set(position,new Random(user,1)); 

Я имею в виду мне нужно место value.Somebody сказал, что нужно сделать орудие map для this.But я не знаю, как я могу сделать it.I нужен пример.

Это мой класс:

private static class Randoms{ 
    private List<Random> randoms=null; 

    public Randoms(List<Random> randoms) { 
     this.randoms=randoms; 
    } 
    public Random get(int position) { 
     return randoms.get(position); 
    } 
    public int size() { 
     return randoms.size(); 
    } 
} 

И это мой адаптер:

private static class RandomsAdapter extends BaseAdapter{ 
    private Randoms randoms; 
    private LayoutInflater inflater; 
    private Context context; 
    private RandomsAdapter(Context context,Randoms randoms) { 
     this.randoms=randoms; 
     this.inflater = LayoutInflater.from(context); 
     this.context=context; 
    } 
    public void updateRandoms(Randoms randoms) { 
     this.randoms=randoms; 
     notifyDataSetChanged(); 
    } 
    @Override 
    public int getCount() { 
     return randoms.size(); 
    } 
    @Override 
    public Random getItem(int position) { 
     return randoms.get(position); 
    } 
    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 
    public View getView(int position,View convertView,ViewGroup parent) { 

    } 

} 

ответ

0

Если я вас правильно понял, вы хотите использовать позицию элемента в списке в качестве идентификатора значение предмета:

Вы можете создать класс-оболочку для Random, который будет содержать объекти его идентификатор.

class RandomWrapper { 
    private Random rand; 
    private int id; 
    RandomWrapper(Random rand, int id) { 
     this.rand = rand; 
     this.id = id; 
    } 
    public Random getRand() { 
     return this.rand; 
    } 
    public int getID() { 
     return this.id; 
    } 
} 

Таким образом, если вы хотите получить доступ к Random, вызовите yourRandomWrapper.getRand(), и если вы хотите получить идентификатор, вызовите yourRandomWrapper.getID()

Так, например, добавление 5 элементов в список:

for(int i = 0; i < 5; i++) { 
    randomsList.add(new RandomWrapper(yourRandomObj, i)); 
} 

Если вы хотите создать уникальный идентификатор для своих объектов, вы можете использовать класс java.util.UUID. Если вас интересует, как это работает, вы можете проверить this answer или Oracle Docs

+0

http://stackoverflow.com/questions/25715154/arraylist-custom-location/25715387 Можете ли вы просмотреть это? –

Смежные вопросы