我正在使用自定義列表適配器的列表視圖。顯示鍵盤之前顯示空數據的Android listview?
當我點擊「+」按鈕時,會動態添加一個列表項。每個列表項目包含4個EditTexts。
第一個列表項目顯示正確的數據,但其他項目的最右邊的EditTexts爲空。
這是問題
你可以看到最後一次編輯的文本顯示,除了第一個列表項的空數據。顯示鍵盤後,此問題即告解決。
打開軟鍵盤
我嘗試使用adapter.notifyDataSetChanged()
和list.invalidateViews()
,但現在的工作之後。
我該如何解決這個問題?
的onCreate()
Vector v;
CreateExerciseAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_workout);
v = new
adapter = new CreateExerciseAdapter(v,this);
txtName = (EditText)findViewById(R.id.editTextName);
list = (ListView)findViewById(R.id.listView2);
//listview footer button (Add new button)
LayoutInflater inflater = LayoutInflater.from(this);
View inflate = inflater.inflate(R.layout.create_exercise_item, null);
ImageButton btnAddNew = (ImageButton) inflate.findViewById(R.id.imageButtonAddNew);
list.addFooterView(inflate);
btnAddNew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
View item = LayoutInflater.from(view.getContext())
.inflate(R.layout.create_new_exercise_item, null);
v.add(item);
adapter.notifyDataSetChanged();
}
});
list.setAdapter(adapter);
}
謝謝:-)
更新
適配器
public class CreateWorkoutListAdapter extends BaseAdapter {
Context context;
Vector vector;
LayoutInflater inflater = null;
FontManager fm;
public CreateWorkoutListAdapter(Context context, Vector vector){
this.context = context;
this.vector = vector;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return vector.size();
}
@Override
public Object getItem(int position) {
return vector.elementAt(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
view = inflater.inflate(R.layout.create_new_exercise_item, null);
final EditText txtName = (EditText)view.findViewById(R.id.editTextExerciseName);
final EditText txtReps = (EditText)view.findViewById(R.id.editTextReps);
final EditText txtMin = (EditText)view.findViewById(R.id.editTextMin);
final EditText txtSec = (EditText)view.findViewById(R.id.editTextSecond);
return view;
}
}
什麼是 「V」?請張貼適配器代碼。 –
@NIkaKurdadze:謝謝。我更新了問題 – Malinda
你能否更詳細地談論這個問題?是否顯示添加的項目? 「這個問題在顯示鍵盤後解決了」,你到底意味着什麼?「? –