0

我有一个布局如下的选项卡应用程序:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    <RelativeLayout
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:padding="3dp">
       <FrameLayout
           android:id="@android:id/tabcontent"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:layout_weight="1" />
       <TabWidget
           android:id="@android:id/tabs"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_alignBottom = "@android:id/tabcontent"
           />
    </RelativeLayout>
</TabHost>

我想把ListView它叫做一个屏幕,所以我这样设计:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

和gridview看起来像

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" android:background="#ffffff">

     <ImageView
        android:id="@+id/imageViewContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        />

        <TextView
        android:id="@+id/textViewCategoryName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:paddingLeft="8dip"
        />

</LinearLayout>

我使用以下方法调用适配器:

SectionsAdapter adapter = new SectionsAdapter(Sections.this ,R.layout.sectionviewgridview,
                            appState.MainCategories);
                    // updating listview
                    setListAdapter(adapter);

适配器看起来像:

public class SectionsAdapter extends ArrayAdapter<HashMap<String, String>>{

    ArrayList<HashMap<String, String>> mainCategories;

    private final Context context;

    public SectionsAdapter(Context context, int  ResourceId,
            ArrayList<HashMap<String, String>> items)
    {
        super(context, ResourceId);
         this.context = context;
         this.mainCategories = items ;

         Log.d("The count of the hash is",""+items.size()); 

    }

     @Override
public View getView(int position, View convertView, ViewGroup parent) 

{

        Log.d("xxxxxxxxxxxxxxxxxxxxxxxxxxxxx","I'm hereeeeeeeeeeeeeeeeeeeeeeeeee" );


        LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowView = inflater.inflate(R.layout.sectionviewgridview, parent, false);

         ImageView ImageViewObject = (ImageView)rowView.findViewById(R.id.imageViewContent);



         try {
                Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new java.net.URL(mainCategories.get(position).get("imageUrl")).getContent());
                 ImageViewObject.setImageBitmap(bitmap); 

            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        Log.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>",mainCategories.get(position).get("name"));

         TextView TextViewObject = (TextView) rowView.findViewById(R.id.textViewCategoryName);

         TextViewObject.setText(mainCategories.get(position).get("name"));

        return rowView;




}

}

它从不记录getView方法中的内容。知道如何解决吗?

4

2 回答 2

2

如果您将ArrayAdapter调用扩展回超类,super(context, ResourceId);那么您必须确保覆盖该getCount方法以返回确切的数据大小,否则,适配器将不知道您要使用mainCategories作为下划线数据,并将创建一个Listwith大小0getView方法不会被调用。我不确切知道您打算如何使用它ArrayListMaps但请尝试将其添加到您的SectionedAdapter:

@Override
public int getCount() {
     return mainCategories.size();
}

如果这不能解决问题,请添加有关您在做什么的更多详细信息。

于 2012-07-12T02:48:57.903 回答
0

我有同样的问题..

我的布局:

一个Relativelayout中定义的ListView和listview的内容是另外一个Relativelayout中定义的两个textview。

问题:

两个 textviews 的宽度被提到为 0dp,因此 getview 的位置为 0,不显示任何内容。

解决:

通过将两个文本视图的宽度提供给 wrap_content 来解决。

于 2014-03-19T15:17:24.587 回答