仿酷狗音乐列表点击item子控件展开功能

也是项目需要大家先来看看效果图


就是这样不过我的项目可能下面没有这么多项而已,说一下思路:

实际上下面展开的哪一块是被隐藏起来了的,可以获取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>

嗯!到这里就差不多了 我会把 代码上传上去有兴趣的同志可以看看





  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值