Android群英传——第四章动态改变ListView的布局
来源:互联网 发布:食堂订餐软件 编辑:程序博客网 时间:2024/06/06 00:18
看效果:
看代码:
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
- Android群英传——第四章动态改变ListView的布局
- Android群英传——第四章具有弹性的ListView
- Android群英传笔记——第四章:ListView使用技巧
- Android群英传——第四章ListView常用优化
- Android群英传——第四章ListView滑动监听
- Android群英传笔记——第四章:ListView使用技巧
- Android群英传学习——第四章、ListView使用技巧
- Android群英传——第四章自动显示隐藏ActionBar/Toolbar的ListView
- Android群英传学习笔记——自动显示、隐藏布局的ListView
- Android群英传知识点回顾——第四章:ListView常用优化技巧
- 《Android群英传》阅读笔记——第四章:ListView使用技巧
- Android群英传学习——ListView优化
- android群英传笔记——ListView常用优化技巧(二、ListView的滑动监听)
- 《Android群英传》读书笔记(3)第四章:ListView常用拓展
- Android群英传第四章笔记·ListView使用技巧
- Android群英传读书笔记第四章 (ListView使用技巧)
- android群英传笔记--第四章--ListView使用技巧(一)
- android群英传笔记--第四章--ListView使用技巧(二)
- Android Permission访问权限大全
- ubuntu 14.04 設定hostname
- mybatis给对象赋值
- 乱码问题(1),MyEclipse中乱码
- C# 的逻辑判断语句 -5
- Android群英传——第四章动态改变ListView的布局
- 机器学习入门
- maven使用---创建web项目(亲测已创建成功)
- Dom4j文件操作
- 关于NSMutableArray线程安全的思考和实现
- linux 编译glibc
- Delphi-OpenCV-master 安装心德
- iframe
- (原创)分享一个实用的圆形ImageView