我有这个序列的布局:imageview,ratingbar和tabhost(包含用户和信息的评论)。对于用户的tabhost审查,我使用自定义列表视图,并且我成功地显示了来自用户的所有评论。但我的问题,你可以看到下面的图像(listview高度只包含1个项目的内容,如果我滚动它,它可以加载所有数据)
这个我要制作的布局(它显示多个项目作为父级的高度)
这是我的布局xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<!-- HEADER -->
<LinearLayout
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerHorizontal="true"
android:background="#dcdcdc"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_alignParentTop="true">
<ImageView
android:id="@+id/ivplacedetail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:src="@drawable/search"/>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name" />
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<!-- FOOTER -->
<LinearLayout
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:background="#a9d633">
<Button
android:id="@+id/btnhome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:text="Home"
android:background="@layout/round_border"/>
<Button
android:id="@+id/btnbookmark"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:text="Bookmark"
android:background="@layout/round_border"/>
<Button
android:id="@+id/btnnearby"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:text="Nearby"
android:background="@layout/round_border"/>
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/footer"
android:layout_below="@+id/header">
<TabHost
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
</TabHost>
</ScrollView>
</RelativeLayout>
我的listview自定义布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imguser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="1dp"
android:src="@drawable/atmicon"
android:scaleType="fitCenter">
</ImageView>
<TextView
android:id="@+id/lbluser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="3dp"
android:layout_marginBottom="1dp"
android:layout_toRightOf="@+id/imguser"
android:textColor="#4068ec"
android:text="Nama User">
</TextView>
<TextView
android:id="@+id/lblwaktu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imguser"
android:layout_below="@+id/lbluser"
android:layout_marginLeft="5dp"
android:layout_marginTop="1dp"
android:layout_marginBottom="1dp"
android:text="Waktu Review">
</TextView>
<TextView
android:id="@+id/lblreview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imguser"
android:layout_below="@+id/lblwaktu"
android:layout_marginLeft="5dp"
android:layout_marginTop="1dp"
android:layout_marginBottom="1dp"
android:text="isi Review">
</TextView>
</RelativeLayout>
我的列表视图布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/lvreview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
有人可以帮我修改布局吗?
答案 0 :(得分:0)
首先在主类中声明适配器
private ListViewReviewAdapter reviewAdapter;
首先,首先启动适配器然后向其添加数据,即使arruserreview为空
reviewAdapter = new ListViewReviewAdapter(getBaseContext(), arruserreview);
lvreview.setAdapter(reviewAdapter);
在for循环中执行以下操作:
for (int i=1;i<=10;i++) {
UserReviewClass userreview=new UserReviewClass(String.valueOf(i),"Budi"+String.valueOf(i),"10/19/2014","Tempatnya lumayan. Pelayanan yang diberikan baik");
arruserreview.add(userreview);
reviewAdapter.notifyDataSetChanged();
}
所以你会有这样的事情:
ArrayList<UserReviewClass> arruserreview = new ArrayList<UserReviewClass>();
ListView lvreview ;
private ListViewReviewAdapter reviewAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_place_review);
lvreview = (ListView) findViewById(R.id.lvreview);
reviewAdapter = new ListViewReviewAdapter(getBaseContext(), arruserreview);
lvreview.setAdapter(reviewAdapter);
for (int i=1;i<=10;i++) {
UserReviewClass userreview=new UserReviewClass(String.valueOf(i),"Budi"+String.valueOf(i),"10/19/2014","Tempatnya lumayan. Pelayanan yang diberikan baik");
arruserreview.add(userreview);
reviewAdapter.notifyDataSetChanged();
}
}
答案 1 :(得分:0)
正如Daniel M所提到的那样,宣布你的适配器(出于各种原因,这只是一种很好的做法)。
private ListViewReviewAdapter reviewAdapter;
在for循环中构建arruserreview数组后,将数组传递给适配器并进行设置:
reviewAdapter = new ListViewReviewAdapter(this, arruserreview);
lvreview.setAdapter(reviewAdapter);
在数组适配器中,将构造函数更改为:
public ListViewReviewAdapter(Context context, ArrayList<UserReviewClass> results) {
DataProcessorResult = results;
mycontext = context;
myInflater = LayoutInflater.from(context);
}
由于您在reviewAdapter和构造函数中将上下文作为参数传递,因此您可以从适配器类中删除以下行:
final Context mycontext=parent.getContext();