gpt4 book ai didi

android - 将 OnItemLongClick 监听器与 ListView 一起使用

转载 作者:太空狗 更新时间:2023-10-29 16:04:29 25 4
gpt4 key购买 nike

我有一个 ListView,其中包含布局文件 entry.xml 给出的条目 我想从 ImageView 可见性设置为 View.GONEonItemLongClick 将其更改为 View.VISIBLE。长按的 ListView 条目将保持突出显示状态。

然后我想将 onClickListener 添加到 ImageView(虽然它可见),以便可以通过点击删除被点击的 ListView 条目图片。

ListView 条目上还需要有第二个 OnClickListener,这样如果它被长按并突出显示,可以通过(短)单击入口。这会将 ImageView 恢复为 View.GONE

我怎样才能做到这一点?


listview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>

</LinearLayout>

entry.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="8dp" >

<ImageView
android:id="@+id/entry_deleteicon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:adjustViewBounds="true"
android:baselineAlignBottom="false"
android:maxHeight="40dp"
android:maxWidth="45dp"
android:src="@drawable/delete"
android:visibility="gone" />

<TextView
android:id="@+id/entry_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:text="text" />
</RelativeLayout>

我的自定义适配器

private class SaveAdapter extends ArrayAdapter<String> {
private int resourceId;
private SaveHolder[] holder;

public SaveAdapter(Context context, int resource) {
super(context, resource);
this.resourceId=resource;
this.holder = new SaveHolder[5];
}

@Override
public int getCount() {
return 5;
}

@Override
public View getView(final int position, View row, ViewGroup parent) {
holder[position] = null;
if(row==null){
LayoutInflater inflater = getActivity().getLayoutInflater();
row = inflater.inflate(resourceId, parent, false);

holder[position] = new SaveHolder();
holder[position].textName = (TextView) row.findViewById(R.id.entry_name);
holder[position].iconDelete = (ImageView) row.findViewById(R.id.entry_deleteicon);
row.setTag(holder[position]);
}else{
holder[position] = (SaveHolder) row.getTag();
}
holder[position].textName.setText("name");
return row;
}
}

static class SaveHolder{
TextView textName;
ImageView iconDelete;
}

最佳答案

试试这个:

private ImageView tmpImageView;

...

@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long arg3){
tmpImageView = (ImageView) view.findViewById(R.id.YOUR_IMAGEVIEW_ID);
tmpImageView.setVisibility(View.VISIBLE);
}

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int arg2, long arg3){
tmpImageView.setVisibility(View.GONE);
}

...

希望这对你有用...

关于android - 将 OnItemLongClick 监听器与 ListView 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19857719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com