急~!Android listView 怎么样显示条数 比如:数据的条数不确定有的有5条,有的有4条应该怎么显示

急~!Android listView 怎么样显示条数 比如:数据的条数不确定有的有5条,有的有4条应该怎么显示,第1张

SimpleAdapter adapter = new SimpleAdapter(DialogListDemothis,

getData(), Rlayoutlistview, new String[] { "text",

"text1", "text2", "img" }, new int[] {

RidL_TextView01, RidL_TextView03,

RidL_TextView04, RidL_ImageButton01 });

lvsetAdapter(adapter);

private List<Map<String, Object>> getData() {

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

Map<String, Object> map = new HashMap<String, Object>();

Cursor cur = DRquery("myuser", new String[] { "userID", "psd" ,"repsd"}, null,

null, null, null, null);

while (curmoveToNext()) {

String name2 = curgetString(0);

String psd2 = curgetString(1);

String repsd= curgetString(2);

mapput("text",repsd);

mapput("text1", name2);

mapput("text2", psd2);

mapput("img", Rdrawablea35);

listadd(map);

// }

}

我这里面是写数据插入的(片段代码) ,所以不确定要插入多少个 应用while (curmoveToNext()) {

}用游标对数据库进行遍历 然后插入到listview里面

解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值

大概算法:重写BaseAdaptergetView函数,用一个数组存储EditText中的值,根据position即数组下标,在getView中动态更新EditText和动态获取EditText中的值因为ListView中的item是复用的,如果不动态清空或动态获取EditText中值,就会出现数据紊乱,或者没数据那么在生成EditText的时候要监控其值的变化存储下来

举例代码:

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;// 用来定义的标志性主键,可不用关心

}

}

1、在listitem中初始化button的时候,给该button添加一个setTag方法,将此时的索引值传进去,然后在button的onclick事件中调用view的getTag方法,即可将listitem的索引读出来,代码如下:

tagButtonsetTag(position);

此处的tagButton就是定义的button,Position是view里边的位置。

2、初始化button的时候通过setTag方法传入一个item的索引值

private OnClickListener tagButtonOnClick = new OnClickListener() {

public void onClick(View v) {

final int index = (Integer) vgetTag();

index就是点击button所在Item中的位置,通过这个位置就可以得到Item中的值。

以上就是关于急~!Android listView 怎么样显示条数 比如:数据的条数不确定有的有5条,有的有4条应该怎么显示全部的内容,包括:急~!Android listView 怎么样显示条数 比如:数据的条数不确定有的有5条,有的有4条应该怎么显示、android怎么获取listview上内容、android ListView如何获取点击item所在的哪一行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存