安卓获取选中listview里item的position怎么获取

安卓获取选中listview里item的position怎么获取,第1张

listview里item的position 可以在itemclick的回调方法里获取, 如果是使用checkBox 控件的话, 需要在adapter的getview方法中进行注册, 记录, 使用自定义的适配器可完成

listView有个setAdapter的方法是吧,你创建一个adapter继承BaseAdapter 要重写4个方法,期中有个方法是: public View getView(){} 这个方法就你可以解决你的需求,你需要利用该方法中的参数来获取你想要的这个控件然后修改就可以了,你试试吧。

mListViewsetOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<> parent, View view, int position, long id) {

Textview text = viewfindviewbyid(listview子条目布局中的id);

String number = textgettext();

}

});

ListView你都与给它设置了一个Adapter了,那么直接向Adapter要某个子view就行了。

比如BaseAdapter的:listAdaptergetItemView(int position);

当然你可能要给Adapter实现这个getItemView的方法,不然它默认返回null的。

在listView对应的adapter的getView()方法中,给checkbox设置Tag,checkboxsetTag(position),考虑到视图可能重用,设置tag放在returnconvertView之前就好了。然后在点击checkBox的时候就可以getTag来获取到点击的checkboxid

您好:

package comexmythandroid;

public class ListEditorAdapter extends BaseAdapter {

private LayoutInflater mInflater;

private List<Map<String, Object>> mData;// 存储的EditText值

public Map<String, String> editorValue = new HashMap<String, String>();//

public ListEditorAdapter(Context context, List<Map<String, Object>> data) {

mData = data;

mInflater = LayoutInflaterfrom(context);

init();

}

// 初始化

private void init() {

editorValueclear();

}

@Override

public int getCount() {

return mDatasize();

}

@Override

public Object getItem(int position) {

return null;

}

@Override

public long getItemId(int position) {

return 0;

}

private Integer index = -1;

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

// convertView为null的时候初始化convertView。

if (convertView == null) {

holder = new ViewHolder();

convertView = mInflaterinflate(Rlayoutlistview_item, null);

holdername = (TextView) convertView

findViewById(Ridlist_item_name);

holdertitle = (TextView) convertView

findViewById(Ridlist_item_title);

holdervalue = (EditText) convertView

findViewById(Ridlist_item_inputvalue);

holdervaluesetTag(position);

holderuserkey = (TextView) convertViewfindViewById(Riduser_key);

holdervaluesetOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

if (eventgetAction() == MotionEventACTION_UP) {

index = (Integer) vgetTag();

}

return false;

}

});

class MyTextWatcher implements TextWatcher {

public MyTextWatcher(ViewHolder holder) {

mHolder = holder;

}

private ViewHolder mHolder;

@Override

public void onTextChanged(CharSequence s, int start,

int before, int count) {

}

@Override

public void beforeTextChanged(CharSequence s, int start,

int count, int after) {

}

@Override

public void afterTextChanged(Editable s) {

if (s != null && !""equals(stoString())) {

int position = (Integer) mHoldervaluegetTag();

mDataget(position)put("list_item_inputvalue",

stoString());// 当EditText数据发生改变的时候存到data变量中

}

}

}

holdervalueaddTextChangedListener(new MyTextWatcher(holder));

convertViewsetTag(holder);

} else {

holder = (ViewHolder) convertViewgetTag();

holdervaluesetTag(position);

}

Object value = mDataget(position)get("list_item_name");

if (value != null) {

holdernamesetText((String) value);

}

value = mDataget(position)get("list_item_title");

if (value != null) {

holdertitlesetText(valuetoString());

}

value = mDataget(position)get("user_key");

if (value != null) {

holderuserkeysetText(valuetoString());

} else {

holderuserkeysetText("-1");

}

value = mDataget(position)get("list_item_inputvalue");

if (value != null && !""equals(value)) {

holdervaluesetText(valuetoString());

} else {

String key = mDataget(position)get("user_key")toString();

String inputValue = editorValueget(key);

holdervaluesetText(inputValue);

}

holdervalueclearFocus();

if (index != -1 && index == position) {

holdervaluerequestFocus();

}

return convertView;

}

public final class ViewHolder {

public TextView name;

public TextView title;

public EditText value;// ListView中的输入

public TextView userkey;// 用来定义的标志性主键,可不用关心

}

}

我很奇怪你为什么要这么做,这样的做法是不可取的。报错的原因是在Activity的onCreate方法里,listview是还没有子View的,listgetChildAt()得到的自然是null,你再对其 *** 作当然要报空指针异常。还有在listview有Header的时候,getChildAt(0)得到的是会是Header,需要注意一下。

以上就是关于安卓获取选中listview里item的position怎么获取全部的内容,包括:安卓获取选中listview里item的position怎么获取、Android:我想获取ListView中的某个item的view,然后修改这个view中的某个控件,那我该如何获取这个view、android 中如何根据id来获取listview中的view等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10140861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存