带有自定义扩展BaseAdapter的ListView未显示SherlockFragment,需要提示或建议

时间:2014-01-15 16:01:45

标签: java android listview android-listview android-fragments

我是Android编程的新手,我好像已经停顿了好几天了。我无法找到问题的解决方案,并尝试了许多不同的解决方案,但没有成功。正如标题所示,我的代码运行成功,但ListView没有显示在选定的选项卡上。任何提示建议都会有所帮助。

ItemGuide.Java ------------------------------------

package com.example.alzuni_project;

import android.os.Bundle;
import android.support.v4.view.ViewPager;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragmentActivity;

public class ItemGuide extends SherlockFragmentActivity {

private ViewPager mViewPager;
private TabsAdapter mTabsAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mViewPager = new ViewPager(this);
    mViewPager.setId(R.id.pager);
    setContentView(mViewPager);

    final ActionBar bar = getSupportActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setDisplayShowTitleEnabled(false);
    bar.setDisplayShowHomeEnabled(false);

    mTabsAdapter = new TabsAdapter(this, mViewPager);
    mTabsAdapter.addTab(bar.newTab().setIcon(R.drawable.leathertab_image), LeatherTab.class, null);
    mTabsAdapter.addTab(bar.newTab().setIcon(R.drawable.leathertab_image), SilverTab.class, null);

}
}

LeatherTab.java -------------------------------------------- ------------------

package com.example.alzuni_project;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;

import com.actionbarsherlock.app.SherlockFragment;

public class LeatherTab extends SherlockFragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.leather_fragment, container, false); //Fragment Layout inflated
    TextView text = (TextView) view.findViewById(R.id.boxtest);//TextView for layout testing
    text.setText("Hello");
    ListView leather_listview = (ListView) view.findViewById(R.id.leather_list); // List is initialized
    leather_listview.setAdapter(new LeatherAdapter(getActivity())); //Custom list adapter passes Context

    return view;

}
}

LeatherAdapter.java -------------------------------------------- ----------

package com.example.alzuni_project;

import java.util.ArrayList;

import android.content.Context;
import android.content.res.Resources;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

class LeatherAdapter extends BaseAdapter {

ArrayList<SingleRow> list;
Context context;
public LeatherAdapter(Context c) {
    context = c;
    list = new ArrayList<SingleRow>();

    Resources res = c.getResources();
    String[] titles = res.getStringArray(R.array.leather_list_titles);
    String[] descriptions = res.getStringArray(R.array.leather_list_description);
    int[] images = {R.drawable.belt, R.drawable.wallet, R.drawable.coincase};

    for (int i=0;i<images.length;i++) //Was originally 3
    {
        new SingleRow(titles[i], descriptions[i], images[i]);
    }

}

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

@Override
public Object getItem(int i) {
    return list.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

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

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row = inflater.inflate(R.layout.single_row, viewGroup, false);
    TextView title = (TextView) row.findViewById(R.id.leather_title);
    TextView description = (TextView) row.findViewById(R.id.leather_description);
    ImageView image = (ImageView) row.findViewById(R.id.leather_icon);

    SingleRow temp = list.get(position);

    title.setText(temp.title);
    description.setText(temp.description);
    image.setImageResource(temp.image);

    return row;//returns the rootView of single_row.xml
}
}

leatherfragment.xml -------------------------------------------- ----------

<?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="fill_parent"
android:orientation="vertical" >

 <TextView
    android:id="@+id/boxtest"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#CCDDFF" />

<ListView
    android:id="@+id/leather_list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/boxtest" />

</RelativeLayout>

SingleRow.java -------------------------------------------- ---------

package com.example.alzuni_project;

class SingleRow {

String title;
String description;
int image;

SingleRow(String title, String description, int image) {
    this.title=title;
    this.description=description;
    this.image=image;
}
}

single_row.xml -------------------------------------------- -------

<?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="fill_parent"
android:orientation="vertical" >

<ImageView
    android:id="@+id/leather_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="48dp"
    android:layout_marginTop="48dp"
    android:contentDescription="@string/todo" />

<TextView
    android:id="@+id/leather_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/leather_icon"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="#CCCCCC" />

<TextView
    android:id="@+id/leather_description"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/leather_icon"
    android:layout_alignLeft="@+id/leather_icon"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/leather_title"
    android:background="#CCDDFF" />

1 个答案:

答案 0 :(得分:0)

您的列表似乎为空,请在您的LeatherAdapter中尝试:

 list.add(new SingleRow(titles[i],descriptions[i], images[i]));

在for循环中。