0

我有一个listView,我使用loader1/adapter1contentUri1填充。Android ListView - 通过数据库表选择元素ID

我现在需要做的是监测contentUri2loader2为了更新在同一listView与项目的额外数据。

所以为了做到这一点,我想知道是否有什么办法,我可以选择由他们的底层数据库表ID从listView元素(如数据库表ID是常见的contentUri1contentUri2)?

(我认为一个解决办法是创建和使用一个单一的contentUri3它整合从contentUri1contentUri2的数据,但我宁可不要采取这种方法,如果可以避免的。)

任何其他解决方法/建议还赞赏。

+1

你可以尝试使用数据库表ID在每个listView项目上设置标签。然后,你可以调用getTag来确定你想要选择哪一个。 –

+1

按照http://stackoverflow.com/questions/10644142/setting-tags-to-each-item-in-a-listview-in-android(?) –

回答

0

是的,您可以创建一个Model类,其中包含contentUri和id。喜欢的东西:

public class ListContents { 

    private Uri contentUri; 
    private int id; 

    public ListContents(Uri contentUri, int id) { 
     this.contentUri = contentUri; 
     this.id = id; 
    } 

    public Uri getContentUri() { 
     return this.uri: 
    } 

    public int getId() { 
     return this.id; 
    } 

} 

然后,您可以创建这个类的一个ArrayList,你将能够检索与每一个contentUri相关联的ID。希望这可以帮助

0

您可以使用不可见的textView来存储id的值。

ArrayList<HashMap<String, String>> hashExample = new ArrayList<>(); 


      Integer id = 1 ; 
      String value = "value"; 

       HashMap<Integer, String> map = new HashMap<>(); 
       map.put("ID", "" + id); 
       map.put("VALUE", value); 
       hashExample.add(map);     


      String[] from = {"ID", "VALUE"}; 
      int[] to = {R.id.txtID, R.id.txtValue}; 
      adapter = new SimpleAdapter(getActivity(), hashExample, 
        R.layout.list_item_example, from, to); 
      ListView list = (ListView) getView().findViewById(R.id.listView); 

      list.setAdapter(adapter); 

检索数据,实现这个在onItemClickListener什么

 list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 

        Integer id = Integer.valueOf(((Map<String, String>) adapter.getItem(arg2)).get("ID")); 

         String value= ((Map<String, String>) adapter.getItem(arg2)).get("VALUE"); 

        } 
       }); 

希望它能帮助。

0

无论你是填充你的listView标签添加到单个项目:

YourListItemView.setTag(YourTagKey, YourTagValue); 

然后,当你需要的时候,调用getTag在视图来检索标签:

String tagValue = YourListItemView.getTag(YourTagKey);