为片段创建自定义列表视图?

joh*_*gru 2 eclipse tabs android listview android-fragments

我试图用4个标签构建一个应用程序.每个选项卡都有一个链接到它的不同片段.问题是我想为每个片段创建一个自定义listView,但它以一些无法解决的错误结束......我已经与其他开发人员交谈了,但我仍然无法创建一个有效的!真的很令人沮丧!

我有:

  • 一个有效的MainActivity类,它使用可滑动的选项卡
  • 在我的自定义ListView上具有我想要的设计的XML.
  • 一个名为fragment1的XML,带有ListView.

这些是我得到的正常错误:

  • "对于Fragment1UG类型,方法findViewById(int)是未定义的"
  • "方法setContentView(int)未定义为Fragment1UG类型.1快速修复可用:创建方法'setContentView()'"

我试图理解和使用的指南之一:

这是我的第一个片段:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class Fragment1test extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            //This layout contains your list view 
                View view = inflater.inflate(R.layout.fragment1, container, false);

               //now you must initialize your list view
                ListView yourListView = (ListView)view.findViewById(R.id.ListView1);
                ListView.setAdapter(new ListAdapter());
              return view;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的ListAdapter.java代码(来自教程):

import java.util.List;

import android.content.ClipData.Item;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ListAdapter extends ArrayAdapter<Item> {

public ListAdapter(Context context, int textViewResourceId) {
    super(context, textViewResourceId);
    // TODO Auto-generated constructor stub
}

private List<Item> items;

public ListAdapter(Context context, int resource, List<Item> items) {

    super(context, resource, items);

    this.items = items;

}

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

    View v = convertView;

    if (v == null) {

        LayoutInflater vi;
        vi = LayoutInflater.from(getContext());
        v = vi.inflate(R.layout.list_design, null);

    }

    Item p = items.get(position);

    if (p != null) {

        TextView tt = (TextView) v.findViewById(R.id.game_txtTitle);
        TextView tt1 = (TextView) v.findViewById(R.id.game_txtRelease);
        TextView tt3 = (TextView) v.findViewById(R.id.game_txtPlatform);

        if (tt != null) {
            tt.setText(p.getId());
        }
        if (tt1 != null) {

            tt1.setText(p.getCategory().getId());
        }
        if (tt3 != null) {

            tt3.setText(p.getDescription());
        }
    }
Run Code Online (Sandbox Code Playgroud)

edw*_*win 12

public class Fragment1test extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        //This layout contains your list view 
            View view = inflater.inflate(R.layout.fragment_basic, container, false);

           //now you must initialize your list view
           ListView listview =(ListView)view.findViewById(R.id.your_listview);

           //EDITED Code 
           String[] items = new String[] {"Item 1", "Item 2", "Item 3"};
           ArrayAdapter<String> adapter =
           new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items); 

            listview.setAdapter(adapter);  

            //To have custom list view use this : you must define CustomeAdapter class
            // listview.setadapter(new CustomeAdapter(getActivity()));
           //getActivty is used instead of Context
         return view;
    }
  }
Run Code Online (Sandbox Code Playgroud)

请参阅此链接问题以了解如何创建自定义适配器

注意:不要使用List片段或List活动来创建自定义列表视图

编辑

 ListView yourListView = (ListView)view.findViewById(R.id.ListView1);
//Here items must be a List<Items> according to your class instead of String[] array
ListAdapter listadapter = new ListAdapter(getActivity(), android.R.layout.simple_list_item_1, items)
ListView.setAdapter( listAdapter);
Run Code Online (Sandbox Code Playgroud)