ListView
'umdaki her satır için gizli bir kimlik değeri kaydetmem gerekiyor. Temel olarak, kodun ihtiyaç duyduğu ve kullanıcının görmesi gerekmeyen bir dize değeri içeren bir değişken.Android ListView Bağdaştırıcısında bir String değişkeninin saklanması
- Kullanıcı
ViewHolder
- Baskı beyan String kurtulur saveName
Button
- Değeri nameField
EditText
- Clicks bir değer girer o
Not: Her satırın saklamak için String
değerine sahip olduğunu unutmayın. Her satırın ViewHolder
'da saklanan String
değeri vardır. Ben bunu başarmaya çalışıyorum.
Benim yaklaşımım, String
değişkenimi, ViewHolder
sınıfında, söz konusu belirli satır için bu değeri koruyacağını umuyordu. Ancak, bağdaştırıcı bu satırı geri döndürdüğünde, dize değerinin boş bir dizeye sıfırlandığını fark ettim.
Adaptör:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.custom_row, null);
holder = new ViewHolder();
holder.saveName = (Button) convertView.findViewById(R.id.saveName);
holder.nameField = (EditText) convertView.findViewById(R.id.nameField);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
//Button That saves what the user entered in the nameField to the String variable
holder.saveName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
holder.hidden_value = nameField.getText().toString();
}
});
//Just to check whether the value is saved when I recycle listview when scrolling
Log.d("test", holder.hidden_value);
//It logs an empty string. The value from the editext was not saved!
}
static class ViewHolder {
EditText nameField;
Button saveName;
String hidden_value = "";
}
Neden değer dize kaydedilen almaz? Günlüğe kaydetmeye çalıştığımda boş bir dizeyi kaydeder! Neyi yanlış yapıyorum?
"gizli dize kimliğinizi" bağdaştırıcınızın veri modelinde saklayın – pskink
Maalesef, Veri modeli nedir? @pskink – Dinuka
Bu dizeyi bir ArrayList'e yerleştirin ve onClick yönteminde notifyDatasetChanged() öğesini çağırın. Ayrıca, getItem (int position) ve getCount() yöntemlerinde, arraylist'inizi kullanın. – Ozgur