在listView中设置可查看项目数

时间:2014-09-02 13:12:33

标签: java android android-listview

有没有办法为列表视图设置可查看项目数?或者我是否有义务为列表视图设置高度?

例如,我有一个包含9个项目的列表。我只希望其中有4个首先出现。然后用户需要滚动才能看到其他项目。

list_anlam.xml

<LinearLayout 
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="vertical" 
     android:layout_margin="1dp"
     android:background="@android:color/darker_gray" >

      <TextView
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/title_popup_hikayeoku" />
      <EditText android:id="@+id/kelime_text"
          android:inputType="text"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          />

      <ListView android:id="@+id/list_anlam"
         android:layout_width="match_parent"
        android:layout_height="wrap_content"></ListView>
      <Button
          android:id="@+id/button_sec"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/button_popup_hikayeoku" />

 </LinearLayout>

list_item.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:textSize="20sp"
    android:padding="10dp" />

我将项目填入listview:HikayeOkuActivity.java是

String[] anlamlar = null;
                    anlamlar = MainActivity.dbM.ilkAnlamGetir(selectedText);

                    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item,anlamlar);
                    anlamList.setAdapter(adapter);
                    popupWindow.showAsDropDown(mainLayout, touchedX,touchedY);

3 个答案:

答案 0 :(得分:0)

基本上,每个视图的高度必须是ListView高度的1/4。如果要支持所有设备分辨率,则必须进行计算。如果您需要更多相关信息,请添加评论,我会详细解释。

重要的是,您使用哪种适配器进行ListView?

答案 1 :(得分:0)

如果我错了,请纠正我,但是......

您还可以在xml布局中使用 android:WEIGHTSUM android:WEIGHT 参数。为父视图(您的ListView)设置android:weightsum = 1,为子视图设置android:weigth = 0.25(ListView项目的布局)。在这种情况下,您无需计算可视对象的高度。

答案 2 :(得分:0)

是的,你需要获得listview的高度。在你的onCreate中你会做类似的事情:

listview.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    height = listView.getHeight();
}

在适配器的getView方法中,然后使用height除以4来设置每个列表项的高度。

public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = activity.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.item_layout, parent, false);
    rowView.setMinHeight(height/4);
    return rowView;
}

现在最好使用ViewHolder完成,但这不是主题。