ListView 本意只是:让数据和TextView一次绑定 能自适应数据的长度 而自动+/-行数
但是 现在 要求 ListView 能支持 展开/隐藏 即:当点中某项时 其能显示更多内容 可以么? 当然
[代码 步骤]
1. 定义一下图片及文字数组 供显示用
int[] image = {
R.drawable.beijing1_s,R.drawable.beijing2_s,R.drawable.beijing3_s,R.drawable.beijing4_s,R.drawable.beijing5_s
};
String[] text = {
"贝贝","晶晶","欢欢","盈盈","妮妮"
};
2. 定义BaseAdapter 并根据点击的ID 做比较 决定是否添加更多内容
public class ListMoreAdapter extends BaseAdapter {
Activity activity;
LayoutInflater lInflater;
public ListMoreAdapter(Activity a){
activity = a;
lInflater = activity.getLayoutInflater();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return image.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LinearLayout layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(addTitleView(position));
if(ID==position){
layout.addView(addCustomView(position));
}
return layout;
}
public View addTitleView(int i){
LinearLayout layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.HORIZONTAL);
ImageView iv = new ImageView(activity);
iv.setImageResource(image[i]);
layout.addView(iv,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
TextView tv = new TextView(activity);
tv.setText(text[i]);
layout.addView(tv,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
layout.setGravity(Gravity.CENTER);
return layout;
}
public View addCustomView(int i){
View view = new View(activity);
switch(i){
case 0:
ImageView iv = new ImageView(activity);
iv.setImageResource(R.drawable.beijing4_b);
view = iv;
break;
case 1:
view = lInflater.inflate(R.layout.layout1, null);
break;
case 2:
break;
}
return view;
}
}
3. 代码比较简单 没什么细说的 不理解的请跟帖 好答复之
4. emulator 运行截图: