0

Ich habe eine listView die ich von contentUri1 mit loader1/adapter1 bevölkern.Android ListView - Wählen Sie Element nach Datenbanktabelle ID

Was ich jetzt tun muss, ist Monitor contentUri2 mit loader2, um die Elemente in der gleichen listView mit zusätzlichen Daten zu aktualisieren.

Also, um dies zu tun, ich frage mich, ob es eine Möglichkeit, Elemente aus listView durch die zugrunde liegende Datenbanktabelle ID auswählen kann (wie die Datenbanktabelle IDs gemeinsam ist für contentUri1 und contentUri2)?

(A Abhilfe, die ich in Betracht gezogen haben, ist eine einzige contentUri3 zu erstellen und zu verwenden, die die Daten von contentUri1 und contentUri2 aber ich eher nicht, diesen Ansatz haben zu nehmen, wenn vermeidbar wäre konsolidiert.)

Alle anderen Abhilfen/Vorschläge auch geschätzt.

+1

Sie könnten Versuchen Sie ein Tag für jedes listView-Element mit der ID der Datenbanktabelle zu setzen. Dann könnten Sie getTag aufrufen, um zu bestimmen, welche ausgewählt werden sollen. –

+1

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

Antwort

0

Ja, Sie können eine Model-Klasse erstellen, die den ContentUri und die IDs enthält. Etwas wie:

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; 
    } 

} 

Sie können dann eine ArrayList dieser Klasse erstellen, und Sie werden in der Lage sein ids mit jedem contentUri zugeordnet abzurufen. Hoffe, das hilft

0

Sie können eine unsichtbare textView verwenden, um den Wert der ID zu speichern.

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); 

die Daten abzurufen, diese

auf onItemClickListener oder etwas implementieren in
 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"); 

        } 
       }); 

Hoffe, es hilft.

0

Wo auch immer Sie bevölkern Ihre listView die Tags zu den einzelnen Positionen hinzufügen:

YourListItemView.setTag(YourTagKey, YourTagValue); 

Dann, wenn Sie es brauchen, getTag auf der Ansicht, rufen Sie den Tag abzurufen:

String tagValue = YourListItemView.getTag(YourTagKey);