0

Ich möchte den Textwert eines Listenelements abrufen und es an einen Bearbeitungstext in einem anderen Fragment übergeben, wenn auf das Listenelement geklickt wird.OnItemClick wie man den Textwert des angeklickten Elements aus der Listenansicht bezieht

Hier ist mein Code, um den Wert zu erhalten und an das andere Fragment zu übergeben.

lv_categories.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      String clickedItem = adapterView.getItemAtPosition(i).toString().trim(); 
      SM.sendData(clickedItem); 
     } 
    }); 

Sendedaten Methode

@Override 
public void sendData(String message) { 
    String tag = "android:switcher:" + R.id.container + ":" + 1; 
    SearchFragment searchFragment = (SearchFragment) getSupportFragmentManager().findFragmentByTag(tag); 
    searchFragment.displayReceivedData(message); 
} 

Ich bin in der Lage, die Daten zu empfangen, aber nicht wie zB angezeigt. Anstatt den Listenpunkt "Weihnachten" zu erhalten, bekomme ich etwas wie "[email protected]"

Auch wie kann ich Fragmente auf Klick ändern?

Jede Hilfe wird sehr geschätzt danke!

+0

teilen Sie Modellklasse, die Sie in Listview mit der Frage – Prem

+0

https://StackOverflow.com/Questions/47363151/getting-the-Values-of-Listview-selected-item/47363188#47363188 übergibt –

Antwort

1

Ich kann die Daten aber nicht wie angezeigt z. B. empfangen. Anstatt den Listeneintrag „Weihnachten“ empfangen, ich bin immer so etwas wie „[email protected]

Da adapterView.getItemAtPosition(i) Might Rückkehr Sie benutzerdefinierte Modellklasse nicht String Wert

Versuchen Sie, diese

lv_categories.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       YourModelClass data = adapterView.getItemAtPosition(i); 

       SM.sendData(data.getMessage); 
      } 
     }); 
0

Ihre class-string Konvertierendes offensichtlich druckt classname mit Offset, versuchen Sie unter

lv_categories.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      String clickedItem = ((Category)adapterView.getItemAtPosition(i)).getMyTextproperty(); 
      SM.sendData(clickedItem); 
     } 
    }); 
0

->adapterView.getItemAtPosition(i) kein String!

So ersetzen, -------

String clickedItem = adapterView.getItemAtPosition(i).toString().trim(); 

mit,

String clickedItem = ((Category)adapterView.getItemAtPosition(i)).getMyTextproperty(); 

es ist gut, wenn Sie Ihre Modellklasse teilen können.

Verwandte Themen