Android群英传——第四章动态改变ListView的布局

来源:互联网 发布:食堂订餐软件 编辑:程序博客网 时间:2024/06/06 00:18

看效果:
listview

看代码:

import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;/** * Created by feathers on 16-11-15. */public class MyAdapter extends BaseAdapter {    private Context mContext;    private ArrayList<String> mData = null;    private int mCurrentItem = 0;    public MyAdapter(Context context, ArrayList<String> data) {        this.mContext = context;        this.mData = data;    }    @Override    public int getCount() {        return mData.size();    }    @Override    public Object getItem(int i) {        return mData.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int position, View view, ViewGroup viewGroup) {        LinearLayout linearLayout = new LinearLayout(mContext);        linearLayout.setOrientation(LinearLayout.VERTICAL);        // 判断是否是选中的item        if (mCurrentItem == position) { // 是则为一种布局            linearLayout.addView(addFocusView(position));        } else { // 不是则为另一个布局            linearLayout.addView(addNormalView(position));        }        return linearLayout;    }    private View addFocusView(int i) {        ImageView iv = new ImageView(mContext);        iv.setImageResource(R.mipmap.ic_launcher);        return iv;    }    private View addNormalView(int i) {        TextView tv = new TextView(mContext);        tv.setText((String)getItem(i));        return tv;    }    // 暴露方法,让setOnItemClickChanageListener决定当前时哪个item被选中    public void setCurrentItem(int currentItem) {        this.mCurrentItem = currentItem;        this.notifyDataSetChanged();    }}

MainActivity.java

import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    private ListView mListView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mListView = (ListView) findViewById(R.id.listView);        ArrayList<String> mData = new ArrayList<>();        for (int i = 0; i < 30; i++) {            mData.add("我是Item" + i);        }        final MyAdapter adapter = new MyAdapter(this, mData);        mListView.setAdapter(adapter);        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {                // 注意                 adapter.setCurrentItem(i);            }        });    }}
1 0
原创粉丝点击