也是项目需要大家先来看看效果图
就是这样不过我的项目可能下面没有这么多项而已,说一下思路:
实际上下面展开的哪一块是被隐藏起来了的,可以获取itme的事件点击,接收点击事件展开(显示出来),点击另外的隐藏起来
下面是我的效果图(大家可以自己设置样式,我的比较丑)
好图片有点大,但是看的爽对不!下面贴代码
public class MainActivity extends Activity { private ListView mListView; private ListAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) findViewById(R.id.list); mAdapter = new ListAdapter(this, listener, listener2, listener3); mListView.setAdapter(mAdapter); //mListView.setOnItemClickListener(this); } // @Override // public void onItemClick(AdapterView<?> parent, View view, int position, // long id) { // mAdapter.changeImageVisable(position); // } MyClickListener listener = new MyClickListener() { @Override public void myOnClick(int position, View v) { Toast.makeText(MainActivity.this, "修改", 2000).show(); } }; MyClickListener2 listener2 = new MyClickListener2() { public void myOnClick2(int position, View v) { Toast.makeText(MainActivity.this, "重置", 2000).show(); } }; MyClickListener3 listener3 = new MyClickListener3() { @Override public void myOnClick3(int position, View v) { mAdapter.changeImageVisable(position); } }; }
Activity的xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
适配器代码:
public class ListAdapter extends BaseAdapter { private Context mContext; private int mLastPosition = -1; private MyClickListener mListener; private MyClickListener2 mListener2; private MyClickListener3 mListener3; public ListAdapter(Context context, MyClickListener mListener, MyClickListener2 mListener2, MyClickListener3 mListener3) { this.mContext = context; this.mListener = mListener; this.mListener2 = mListener2; this.mListener3 = mListener3; } @Override public int getCount() { return 100; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { Holder holder = new Holder(); if (convertView == null) { LayoutInflater inflater = LayoutInflater.from(mContext); convertView = inflater.inflate(R.layout.list_item, null); holder.textView = (TextView) convertView .findViewById(R.id.textView); holder.UEFAView = (ImageView) convertView .findViewById(R.id.image_uefa); holder.mascotView = (ImageView) convertView .findViewById(R.id.image_mascot); holder.hint = convertView.findViewById(R.id.hint_image); convertView.setTag(holder); } else { holder = (Holder) convertView.getTag(); } holder.textView.setText("Hello,It is " + position); if (position == mLastPosition) { holder.hint.setVisibility(View.VISIBLE); } else { holder.hint.setVisibility(View.GONE); } holder.UEFAView.setOnClickListener(mListener); holder.UEFAView.setTag(position); // holder.mascotView.setOnClickListener(mListener2); holder.mascotView.setTag(position); holder.textView.setOnClickListener(mListener3); holder.textView.setTag(position); return convertView; } public static abstract class MyClickListener implements OnClickListener { @Override public void onClick(View v) { myOnClick((Integer) v.getTag(), v); } public abstract void myOnClick(int position, View v); } public static abstract class MyClickListener2 implements OnClickListener { public void onClick(View v) { myOnClick2((Integer) v.getTag(), v); } public abstract void myOnClick2(int position, View v); } public static abstract class MyClickListener3 implements OnClickListener { public void onClick(View v) { myOnClick3((Integer) v.getTag(), v); } public abstract void myOnClick3(int position, View v); } class Holder { TextView textView; ImageView UEFAView; ImageView mascotView; View hint; } public void changeImageVisable(int position) { if (position != mLastPosition) { mLastPosition = position; } else { mLastPosition = -1; } notifyDataSetChanged(); } }
listview的item的list_item.xml代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="60dp" > <ImageView android:id="@+id/iv_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="20dp" android:src="@drawable/normal" /> <LinearLayout android:id="@+id/ll_context" android:layout_width="200dp" android:layout_height="60dp" android:layout_toRightOf="@id/iv_status" android:orientation="vertical" > <TextView android:id="@+id/tv_context" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="asdf" /> <LinearLayout android:layout_width="150dp" android:layout_height="60dp" android:orientation="horizontal" > <TextView android:id="@+id/tv_select" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="asdf" /> <TextView android:id="@+id/tv_setlen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="asdf" /> </LinearLayout> </LinearLayout> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="60dp" android:layout_alignParentRight="true" android:gravity="center" android:text="展开" android:textSize="20sp" /> </RelativeLayout> <LinearLayout android:id="@+id/hint_image" android:layout_width="match_parent" android:layout_height="60dp" android:orientation="horizontal" android:visibility="gone" > <ImageView android:id="@+id/image_uefa" android:layout_width="0dp" android:layout_height="60dp" android:layout_weight="1" android:src="@drawable/uefa" /> <ImageView android:id="@+id/image_mascot" android:layout_width="0dp" android:layout_height="60dp" android:layout_weight="1" android:src="@drawable/mascot" /> </LinearLayout> </LinearLayout>
嗯!到这里就差不多了 我会把代码上传上去有兴趣的同志可以看看
时间: 2024-10-06 03:16:13