[英]How do I save contents in an edittext that is in a listview
在選項卡式活動中,在選項卡1下,我有一個按鈕,可將編輯文本添加到屏幕上,每個按鈕一個,我希望用戶輸入一些文本。 但是,當列表足夠長時,當用戶打開鍵盤時,它將覆蓋列表。 之后,當鍵盤關閉時,在edittext上鍵入的所有內容都會消失。 所以我想知道如何將在edittext中鍵入的數據接收到arraylist中。 我知道我們需要獲取gettext.tostring(),但是我應該在哪里鍵入它以便自動將其添加到arraylist?
看看這個就知道問題了: https : //drive.google.com/open?id=15YccHFrKYdvoxnc-ftZT9WSfcEGJG5Os
這是我所做的:
public class tab1task extends Fragment {
ArrayList<String> tasks= new ArrayList<String>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View view1= inflater.inflate(R.layout.tasktab1,container,false);
Button add_task = (Button) view1.findViewById(R.id.addtask);
add_task.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tasks.add("");
ListView listView = (ListView) view1.findViewById(R.id.alltasks);
customAdapter customAdapter = new customAdapter();
listView.setAdapter(customAdapter);
}
});
ListView listView = (ListView) view1.findViewById(R.id.alltasks);
customAdapter customAdapter = new customAdapter();
listView.setAdapter(customAdapter);
return view1;
}
class customAdapter extends BaseAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = getActivity().getLayoutInflater().inflate(R.layout.addtaskcustomlayout,null);
EditText task = (EditText) view.findViewById(R.id.taskadd);
task.setId(position);
tasks.set(position,task.getText().toString());
task.setText(tasks.get(position));
return view;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public Object getItem(int position) {
return tasks.get(position);
}
@Override
public int getCount() {
return tasks.size();
}
}
}
按下按鈕ADD后,您沒有保存您的值。
嘗試使用以下代碼:
public View getView(int position, View convertView, ViewGroup parent) {
View view = getActivity().getLayoutInflater().inflate(R.layout.addtaskcustomlayout,null);
EditText task = (EditText) view.findViewById(R.id.taskadd);
task.setId(position);
task.setText(tasks.get(position));
TextWatcher tw = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
tasks.set(position,s.toString());
}
};
task.addTextChangedListener(tw);
return view;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.