【发布时间】:2014-07-05 15:12:10
【问题描述】:
我的聊天应用程序有一个 ListView,有时我需要删除 TextView 并根据数据输入加载图像,以实现我有一些想法并且我已经尝试过,但是当我添加时 listview 搞砸了图像,无论如何,认为可能是可以使用一些好人的一些经验请关于这样做的正确方法是什么?我认为他们的方式是:
1.创建2个ViewHolders和ConvertViews set,每次加载1个
2.将 listView 中的 imageView 设置为 Invisible ,并在需要时可见(这个我试过但失败了,就像说的那样)
如果你能给我一个提示或帮助,我真的很感激,非常感谢
我已经尝试过的一部分:
@Override
public int getCount() {
return mCursor.getCount();
}
@Override
public Object getItem(int position) {
return mCursor.getString(position);
}
@Override
public long getItemId(int position) {
return mCursor.getPosition();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mLayoutInflater.inflate(R.layout.listitem_discuss, null);
this.convertview=convertView;
System.out.println("ConverView null");
holder.PimageView = (ImageView)convertView.findViewById(R.id.PimageView);
//PimageView is the One i have Problem With, it gets Visible When Inputs are Images
holder.wrapper = (LinearLayout) convertView.findViewById(R.id.wrapper);
//wrapper is my LinearLayout child of FrameLayout
holder.theMessage = (TextView) convertView.findViewById(R.id.comment);
holder.theName = (TextView) convertView.findViewById(R.id.MSGname);
holder.theImage = (ImageView)convertView.findViewById(R.id.MSGimage);
holder.lp = (FrameLayout.LayoutParams) holder.theName.getLayoutParams();
holder.paramsleft = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,Gravity.LEFT);
holder.paramsright = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,Gravity.RIGHT);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
mCursor.moveToPosition(position);
String imagenamer=
(mCursor.getString(mCursor.getColumnIndex("username")).split("\\@"))[0];
int isright= Integer.valueOf(mCursor.getString(mCursor.getColumnIndex("isright")));
if(!"".equals(mCursor.getString(mCursor.getColumnIndex("isfile")))){
System.out.println("its a file");
String type=(mCursor.getString(mCursor.getColumnIndex("isfile")).split("\\@ADAT")
[0]);
System.out.println("Type:"+type);
switch (type) {
case "image":
//theMessage is replaced with PimageView and so TheView
holder.theMessage.setVisibility(View.GONE);
holder.PimageView.setVisibility(View.VISIBLE);
System.out.println("its an image");
holder.PimageView.setLayoutParams(new
LinearLayout.LayoutParams(PViewWidth,LayoutParams.WRAP_CONTENT));
if(isright==0){
holder.PimageView.setBackgroundResource(R.drawable.bubble_yellow);
}else{
holder.PimageView.setBackgroundResource(R.drawable.bubble_yellow);
}
但 ListView 在滚动时会弄乱位置
【问题讨论】:
标签: android listview android-listview adapter