gpt4 book ai didi

android - 如何在填充列表后以编程方式更改列表元素的高度

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:24 25 4
gpt4 key购买 nike

我正在处理新闻项目列表。我的列表是一个扩展 ListActivityActivity。我还创建了一个 ArrayAdapter 用于扩充列表的元素。 ArrayAdapter 使用带有一个 ImageView 和两个 TextView 的简单布局。一切正常,但是当我重写 onListItemClick() 的方法并尝试在单击它们时调整列表元素的大小时没有任何反应。

protected void onListItemClick(ListView l, View v, int position, long id) {
v.getLayoutParams().height=300;
}

我也用 LayoutParams 尝试了上面的方法

这是我用来填充列表的每一行的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:background="@color/white"
>

<ImageView
android:id="@+id/icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="10dp"
android:layout_marginTop="4dp"
android:src="@drawable/ic_launcher" >
</ImageView>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
android:id="@+id/title1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textColor="@color/black"
android:textColorHint="@color/black"
android:textSize="10dp"
android:textStyle="bold" >

</TextView>

<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label"
android:textColor="@color/black"
android:textColorHint="@color/black"
android:textSize="10dp" >

</TextView>
</LinearLayout>

</LinearLayout>

有人遇到过同样的问题吗?任何人都可以为 Android 的初学者提供一些启示吗?

最佳答案

我终于找到了解决问题的办法,我想与社区的其他人分享。

我正在使用 arrayAdapter 来膨胀我的行布局,下面是它的代码:

public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
private final Bitmap[] images;
private final String[] names;

public MySimpleArrayAdapter(Context context, String[] values, Bitmap[] images, String [] names) {
super(context, R.layout.rowlayout, values);
this.context = context;
this.values = values;
this.images=images;
this.names=names;
}


View rowView;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//View rowView;

rowView = inflater.inflate(R.layout.rowlayout, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
TextView title=(TextView) rowView.findViewById(R.id.title1);
textView.setText(values[position]);
imageView.setImageBitmap(images[position]);
title.setText(names[position]);
return rowView;
}
}

我的主要 Activity 扩展了 ListActivity,其中列表的项目是从异步任务中的一些 json 文件中获取的。在 AsyncTask 的 onPostExecute 方法中,我的列表是用获取的项目创建的。

以下是 onListItemClick 方法的代码:

    @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
int hei=v.getLayoutParams().height;
System.out.println("Height "+hei);
if (hei==LayoutParams.WRAP_CONTENT) {
v.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,105));
v.requestLayout();

}
else {
v.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
v.requestLayout();
}
}

诀窍是调用 requestLayout 方法,以便刷新您的布局。

关于android - 如何在填充列表后以编程方式更改列表元素的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com