android中如何获取listview中聚焦的item的索引值

android中如何获取listview中聚焦的item的索引值,第1张

listsetSelection(listgetCount());

list是ListView对象,这个是我刚试过的,可以,也是今天才用的,这行代码要注意用到listsetAdapter()或者adapternotifyDataSetChanged();之后,就是说,必须listView设置了适配器或者适配器数据源改变之后设置

啥问题?

看上去像是要实现listview右键菜单

了解了一下,你如果只是在listview的contextMenuStrip属性中设置好了contextMenuStrip1,那么只要是在listview范围内,点就会出现菜单,你是想必须要点到正主上才出菜单

all right

ControlMousePosition这个用来获取鼠标位置

但是不用通过判断坐标这么麻烦吧

应该可以获取当前点击的listviewitem的index

如果是-1,那么就是没选中了,那就不d出菜单

如果选中了,再根据选中的indexd出相应的菜单

顺便把获取listviewitem坐标的方法告诉你

listView1GetItemAt(X,Y)

通过X,Y坐标定位,这里X,Y可以用

ControlMousePosition获取的坐标判断

MSDN是好东西,多看多搜

呃,没仔细研究,那就用你的第二种办法,满足条件再把contextmenustrip加上去

首先写个ListView 的数据适配器,抽离出来,写一个对象,用来设置listView 每条Item 的 的对象,可以采用ConvertView 设置setTag 将View 房子tag中,可以通过ListvIEW getChildAt()getTag 取得你想要的对象,设置参数,还是铁代码吧!

getView:

ItemObj viewHolder = null;

if(convertView == null){

viewHolder = new ItemObj();

convertView = mLayoutInflateinflate(Rlayoutsimple_item, null);

viewHoldermSimpleCardName = (TextView) convertViewfindViewById(Ridsimple_name);

viewHoldermIsReTake = (TextView) convertViewfindViewById(Ridsimple_num);

viewHoldermContentNext = (TextView)convertViewfindViewById(Ridstatus);

viewHoldermIsNext = (TextView) convertViewfindViewById(Ridicon_next);

convertViewsetTag(viewHolder);

}else{

viewHolder = (ItemObj) convertViewgetTag();

}

PhotoList aPotoLists = (PhotoList) getItem(position);

if(aPotoLists!= null){

viewHoldermSimpleCardNamesetText(aPotoListsphotoName);

if(KeyInMapITFTAKESIMPLE_PIC_TEP!= null){

viewHoldermIsReTakesetText("("+0+")");

if(KeyInMapITFTAKESIMPLE_PIC_TEPequals(aPotoListsphotoName)){

ArrayList<PhotoList> aLists= (ArrayList<PhotoList>) GlobalParameterget(KeyInMapITFTAKESIMPLE_PIC_TEP);

viewHoldermIsReTakesetText("("+aListssize()+")");

}

}

if(aPotoListsstatusequals("0")){

viewHoldermContentNextsetText("未审核");

viewHoldermIsNextsetBackgroundDrawable(mContextgetResources()getDrawable(Rdrawabletask_list_arrows));

}else{

viewHoldermContentNextsetText("已审核");

viewHoldermIsNextsetText("");

convertViewsetOnClickListener(null);

}

}

obj 对象:

public class ItemObj extends Object{

public TextView mSimpleCardName;// 单证的名称

public TextView mIsReTake;// 0 是 单证拍照 1是重拍照片

public TextView mContentNext;// 未提交 未审核等

public TextView mIsNext;// 箭头

public TextView getmSimpleCardName() {

return mSimpleCardName;

}

public void setmSimpleCardName(TextView mSimpleCardName) {

thismSimpleCardName = mSimpleCardName;

}

public TextView getmIsReTake() {

return mIsReTake;

}

public void setmIsReTake(TextView mIsReTake) {

thismIsReTake = mIsReTake;

}

public TextView getmContentNext() {

return mContentNext;

}

public void setmContentNext(TextView mContentNext) {

thismContentNext = mContentNext;

}

public TextView getmIsNext() {

return mIsNext;

}

public void setmIsNext(TextView mIsNext) {

thismIsNext = mIsNext;

}

其实这主要是用了ListView的一个方法,通过坐标就可以确定当前是哪一个listView,别的我就不多说了直接看看代码吧,

lv_flidesetOnTouchListener(new OnTouchListener() {

float oldX = 0;

float oldY = 0;

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

switch (eventgetAction()) {

case MotionEventACTION_DOWN:

//保存按下时的X,Y坐标

oldX = eventgetX();

oldY = eventgetY();

break;

case MotionEventACTION_UP:

//获取按起时的X,Y坐标

float newX = eventgetX();

float newY = eventgetY();

//通过ListView中的pointToPosition方法获取点击ListView中的位置position

final int oldPosition = ((ListView)v)pointToPosition((int)oldX, (int)oldY);

int newPosition = ((ListView)v)pointToPosition((int)newX, (int)newY);

if( newX - oldX > 20 && oldPosition == newPosition) {

//获取ListView中点击是的View

view = ((ListView)v)getChildAt(oldPosition);

for(int n=0;n<datasize();n++)

{

if(n==oldPosition)

{

dataMapput(n, true);

}

else

{

dataMapput(n, false);

}

}

index = oldPosition;

adapternotifyDataSetChanged();

/holderdeletesetVisibility(ViewVISIBLE);

holderdeletesetTextColor(ColorRED);

//删除ListView指定项

holderdeletesetOnClickListener(new OnClickListener(){

@Override

public void onClick(View arg0) {

removeItemView(view,oldPosition);

}

});/

// removeItemView(view,oldPosition);

}

break;

default:

break;

}

return false;

}

});

以上就是关于android中如何获取listview中聚焦的item的索引值全部的内容,包括:android中如何获取listview中聚焦的item的索引值、C#中listviewd出菜单的两种方法问题、android中怎么获取listview的item的信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://www.54852.com/web/9399276.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存