您好,我创建了一个 ListView 和项目,该项目包含 2 个线性布局,我想在 上看到这些布局,具体取决于值,我尝试在适配器的 getview 中执行此操作,但它无法正常工作,我的代码如下所示
Item.xml
<LinearLayout android:id="@+id/LinearLayout00"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:gravity="fill_horizontal"
android:hapticFeedbackEnabled="true"
android:layout_gravity="fill_horizontal"
android:alwaysDrawnWithCache="true" android:background="#ccc"
android:layout_height="wrap_content">
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent" android:orientation="horizontal"
android:gravity="fill_horizontal"
android:hapticFeedbackEnabled="true"
android:layout_gravity="fill_horizontal"
android:alwaysDrawnWithCache="true" android:background="#ccc"
android:layout_height="wrap_content">
<ImageView android:id="@+id/image"
android:layout_width="50dip" android:layout_height="50dip"
android:src="@drawable/stub" android:scaleType="centerCrop"
android:background="#000000" android:layout_margin="5dip" />
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:layout_width="fill_parent" android:orientation="vertical"
android:paddingLeft="5dip" android:paddingRight="5dip">
<TextView android:id="@+id/text" android:text="Username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" android:layout_gravity="left|center_vertical"
android:textColor="#111" />
<TextView android:layout_height="wrap_content"
android:id="@+id/Story" android:text="Story"
android:layout_width="fill_parent" android:textColor="#111"
android:textColorHighlight="#06f" android:textStyle="bold"
android:typeface="sans" android:textSize="15dip" />
<TextView android:layout_height="wrap_content"
android:id="@+id/Time" android:text="12 hours ago"
android:layout_width="fill_parent" android:textColor="#333"
android:textSize="11dip" android:paddingBottom="5dip" />
<TextView android:layout_height="wrap_content"
android:id="@+id/Pid" android:visibility="gone"
android:layout_width="fill_parent" android:textSize="0dip" />
</LinearLayout>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout02"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:layout_width="fill_parent" android:orientation="vertical"
android:visibility="gone" android:paddingLeft="5dip"
android:paddingRight="5dip">
<TextView android:layout_height="wrap_content"
android:id="@+id/follows" android:text="12 hours ago"
android:layout_width="fill_parent" android:textColor="#333"
android:textSize="11dip" android:paddingBottom="5dip" />
<TextView android:layout_height="wrap_content"
android:id="@+id/followData" android:text="Click"
android:clickable="true" android:layout_width="fill_parent"
android:textColor="#333" android:textSize="11dip"
android:paddingBottom="5dip" />
</LinearLayout>
</LinearLayout>
Java 文件
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
Post o=listItems1.get(position);
if(convertView==null){
vi = inflater.inflate(R.layout.item, null);
holder=new ViewHolder();
LinearLayout ly1=(LinearLayout)vi.findViewById(R.id.LinearLayout01);
LinearLayout ly2=(LinearLayout)vi.findViewById(R.id.LinearLayout02);
if(o.getPostType().equals("0"))
{
ly1.setVisibility(View.VISIBLE);
ly2.setVisibility(View.GONE);
}
else
{
ly2.setVisibility(View.VISIBLE);
ly1.setVisibility(View.GONE);
}
//ly.setVisibility(View.VISIBLE);
holder.text=(TextView)vi.findViewById(R.id.text);
holder.story=(TextView)vi.findViewById(R.id.Story);
holder.timeSpan=(TextView)vi.findViewById(R.id.Time);
holder.image=(ImageView)vi.findViewById(R.id.image);
holder.pid=(TextView)vi.findViewById(R.id.Pid);
holder.follows=(TextView)vi.findViewById(R.id.follows);
holder.followsData=(TextView)vi.findViewById(R.id.followData);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
holder.text.setText(o.getUserName());
holder.story.setText(Html.fromHtml(o.getStory()));
holder.timeSpan.setText(o.getTime());
holder.pid.setText(""+o.getPid());
holder.image.setTag(listItemsUrl.get(position).toString());
imageLoader.DisplayImage(listItemsUrl.get(position).toString(), activity, holder.image);
return vi;
}
请帮帮我
关注奥古斯丁
最佳答案
无论 convertView
参数的值如何,您都需要设置这些 View 的可见性。
由于它是可回收的,因此可能(而且很可能确实)拥有与现在赋予它的值(value)不同的其他值(value)。
所以你应该删除部分
LinearLayout ly1=(LinearLayout)vi.findViewById(R.id.LinearLayout01);
LinearLayout ly2=(LinearLayout)vi.findViewById(R.id.LinearLayout02);
if(o.getPostType().equals("0"))
{
ly1.setVisibility(View.VISIBLE);
ly2.setVisibility(View.GONE);
}
else
{
ly2.setVisibility(View.VISIBLE);
ly1.setVisibility(View.GONE);
}
来自 if
子句,并放在它后面。
您还应该看看 Romain Guy's series about Android layout tricks ,看看您的布局如何减少 View 的浪费。
关于Android:listview 项目问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5866604/