我是Android新手并且在使用此方法时遇到了一些问题,并且想知道是否有人可以帮助解决此问题。
问题:我有一个带有EditText框的数组适配器,用户可以在ListView中修改它。但是,我只想要用户修改,而不是我片段中的程序。我该怎么做?(请继续阅读完整的上下文)这里的问题是,当用户在listView中修改此EditText时,适配器将调用片段,片段将操纵这些数字。然后它将修改列表视图中的其他EditText。
对我来说,问题是,当用户修改或点击列表视图中的EditText时,使用afterTextChanged()的值将被传递给片段,但是因为我做了一些修改并修改了它EditMxt以编程方式在列表视图中的不同位置,也为列表视图中的其他EditText视图调用afterTextChanged事件。我只想让用户改变。
要解决这个问题,我尝试使用这个onTouchListener()。只是想知道这是否正确。
Class myArrayAdapter extends ArrayAdapter<Obj>{
//private defines and static viewHolder class
public myArrayAdapter (Context c, ArrayList<Obj> obj, MyFragment myFrag
{
//this....
}
@Override
public View get View (int position, View convertView, ViewGroup parent){
obj posObj = getItem(position);
if (convertView == NULL){
//inflate (ObjlistView)
viewHolder.userInputValue = (EditText) covertView.findViewById(R.id.view_userInput);
//user onTouch
final int pos= position;
viewHolder.userInputValue.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View view, MotionEvent event){
EditText UserInput= (EditText)view;
//this is a custom Text watcher for passing editText Value to Fragment. SO I want this to be only called when user modifies it. Not when the Fragment modifies it and calling notifyDataSetChanged
UserInput.addTextChangedListener(new CustomTextWatcher(pos, myFrag));
return false;
}
});
convertView.setTag(viewHolder)
}else {//...}
viewHolder.userInputValue.setText(posObj.getValue());
}
}
ListVie的XML
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number" // another annoying issue when i user clicks the editText it will show the number pad then will go to the keyboard and every time there is a delete or a new entry this keyboard change will happen. But that is not for this question.
android:id="@+id/view_userInput"
在片段中,这是我再次修改edittext的方式
Obj myTempUserobj ;
for (int i = 0; i< userObj.size(); i++){
myTempUserobj = userObj.get(i);
//modify the field in the object
userObj.set(i,myTempUserobj)
myAdapter.notifyDataSetChanged();
}
感谢您的帮助!