带选项卡片段的android listView

带选项卡片段的android listView,android,android-fragments,android-listview,Android,Android Fragments,Android Listview,我已经创建了一个有两个选项卡的页面,在这两个选项卡中,我想添加一个列表,其中每行都有名称和图像。因此,我分别使用图像对listview进行了编码,但我对如何在选项卡片段页面中添加listview感到困惑。有人能帮我吗。下面是我的代码。 多谢各位 选项卡片段的代码:- TabPagerAdapter.java package com.example.mygoaguide; import android.support.v4.app.Fragment; import android.support

我已经创建了一个有两个选项卡的页面,在这两个选项卡中,我想添加一个列表,其中每行都有名称和图像。因此,我分别使用图像对listview进行了编码,但我对如何在选项卡片段页面中添加listview感到困惑。有人能帮我吗。下面是我的代码。 多谢各位

选项卡片段的代码:-

TabPagerAdapter.java

package com.example.mygoaguide;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
/* This class is used to display tab fragments */

 public class TabPagerAdapter extends FragmentStatePagerAdapter
 {

public TabPagerAdapter(FragmentManager fm)
{
    super(fm);

}

@Override
public Fragment getItem(int i) 
{
    switch (i) {
    case 0:
        // Fragment for beach tab
        return new Beaches();

    case 1:
        //fragment for others tab
        return new Other();
    }
    // TODO Auto-generated method stub
    return null;
}

@Override
public int getCount() {
    // no. of tabs
    return 2;
}
}

MainActivity.java

package com.example.mygoaguide;
import android.os.Bundle;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity {
ViewPager Tab;
TabPagerAdapter TabAdapter;
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TabAdapter = new TabPagerAdapter(getSupportFragmentManager());
    Tab = (ViewPager)findViewById(R.id.pager);
    Tab.setOnPageChangeListener(
            new ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                  actionBar = getActionBar();
                  actionBar.setSelectedNavigationItem(position);                    }
            });
    Tab.setAdapter(TabAdapter);
    actionBar = getActionBar();
    //Enable Tabs on Action Bar
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    ActionBar.TabListener tabListener = new ActionBar.TabListener(){
  @Override
  public void onTabReselected(android.app.ActionBar.Tab tab,
      FragmentTransaction ft) {
    // TODO Auto-generated method stub
  }
  @Override
   public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
          Tab.setCurrentItem(tab.getPosition());
      }
  @Override
  public void onTabUnselected(android.app.ActionBar.Tab tab,
      FragmentTransaction ft) {
    // TODO Auto-generated method stub
  }};
  //Add New Tab
  actionBar.addTab(actionBar.newTab().setText("Beaches").setTabListener(tabListener));
  actionBar.addTab(actionBar.newTab().setText("More").setTabListener(tabListener));

   }
}
ListView的代码:-

MainActivity.java

package com.example.goa;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Choreographer.FrameCallback;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;



public class MainActivity extends Activity 
{

private ListView listView;
private ArrayList<HashMap<String,Object>> data;
private ListAdapter adapter;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView = (ListView) findViewById(R.id.listView);

    data = new ArrayList<HashMap<String, Object>>();
    prePareListData();
    adapter = new ListAdapter(this,data);
    listView.setAdapter(adapter);


}
private void prePareListData(){

    HashMap<String,Object> row1 = new HashMap<String, Object>();
    row1.put("ID",1);
    row1.put("IMAGE",R.drawable.aguada_beach);
    row1.put("NAME","Aguada Beach");
    row1.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row1);

    HashMap<String,Object> row2 = new HashMap<String, Object>();
    row2.put("ID",2);
    row2.put("IMAGE",R.drawable.anjuna_beach);
    row2.put("NAME","Anjuna Beach");
    row2.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row2);

    HashMap<String,Object> row3 = new HashMap<String, Object>();
    row3.put("ID",3);
    row3.put("IMAGE",R.drawable.arambol_beach);
    row3.put("NAME","Arambol Beach");
    row3.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row3);


    HashMap<String,Object> row4 = new HashMap<String, Object>();
    row4.put("ID",4);
    row4.put("IMAGE",R.drawable.baga_beach);
    row4.put("NAME","Baga Beach");
    row4.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row4);

    HashMap<String,Object> row5 = new HashMap<String, Object>();
    row5.put("ID",5);
    row5.put("IMAGE",R.drawable.calangute_beach);
    row5.put("NAME","Calangute beach");
    row5.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row5);


    HashMap<String,Object> row6 = new HashMap<String, Object>();
    row6.put("ID",6);
    row6.put("IMAGE",R.drawable.candolim_beach);
    row6.put("NAME","Candolim Beach");
    row6.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row6);

    HashMap<String,Object> row7 = new HashMap<String, Object>();
    row7.put("ID",7);
    row7.put("IMAGE",R.drawable.miramar_beach);
    row7.put("NAME","Miramar Beach");
    row7.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row7);

    HashMap<String,Object> row8 = new HashMap<String, Object>();
    row8.put("ID",8);
    row8.put("IMAGE",R.drawable.morjim_beach);
    row8.put("NAME","Morjim Beach");
    row8.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row8);


    HashMap<String,Object> row9 = new HashMap<String, Object>();
    row9.put("ID",9);
    row9.put("IMAGE",R.drawable.palolem_beach);
    row9.put("NAME","Palolem Beach");
    row9.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row9);

    HashMap<String,Object> row10 = new HashMap<String, Object>();
    row10.put("ID",10);
    row10.put("IMAGE",R.drawable.vagator_beach);
    row10.put("NAME","Vagator Beach");
    row10.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row10);


}

class ListAdapter extends BaseAdapter{

    private Context context;
    private ArrayList<HashMap<String,Object>> list;
    public ListAdapter(Context context,ArrayList<HashMap<String,Object>> list){
        this.context = context;
        this.list = list;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView == null){
            holder = new ViewHolder();
            convertView = LayoutInflater.from(context).inflate(R.layout.row_beach,null,false);
            holder.imgItemImage = (ImageView) convertView.findViewById(R.id.imgItemImage);
            holder.imgItemArrow = (ImageView) convertView.findViewById(R.id.imgItemArrow);
            holder.txtItemName = (TextView) convertView.findViewById(R.id.txtItemName);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.imgItemImage.setImageResource((Integer)list.get(position).get("IMAGE"));
        holder.imgItemArrow.setImageResource((Integer)list.get(position).get("ARROWIMAGE"));
        holder.txtItemName.setText(list.get(position).get("NAME").toString());

        return convertView;
    }

    class ViewHolder{
        ImageView imgItemImage;
        ImageView imgItemArrow;
        TextView  txtItemName;
    }
 }

}

  activity_main.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:background="@android:color/background_light"
 >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>
MainActivity.java
包com.example.goa;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.Choreographer.FrameCallback;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.HashMap;
公共类MainActivity扩展了活动
{
私有列表视图列表视图;
私有数组列表数据;
专用列表适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(listView)findViewById(R.id.listView);
数据=新的ArrayList();
prePareListData();
adapter=新的ListAdapter(此,数据);
setAdapter(适配器);
}
私有void prePareListData(){
HashMap row1=新的HashMap();
第1行。投入(“ID”,1);
第1行。put(“图像”,R.drawable.aguada_海滩);
第1行。放置(“名称”、“阿瓜达海滩”);
第1行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第1行);
HashMap row2=新的HashMap();
第2行。投入(“ID”,2);
第2行。放置(“图像”,R.drawable.anjuna_海滩);
第2行。放置(“名称”、“安茹纳海滩”);
第2行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第2行);
HashMap row3=新的HashMap();
第3行。投入(“ID”,3);
第3行。put(“图像”,R.drawable.arambol_海滩);
第3行。放置(“名称”、“阿兰波海滩”);
第3行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第3行);
HashMap row4=新的HashMap();
第4行。投入(“ID”,4);
第4行。放置(“图像”,R.drawable.baga_海滩);
第4行。放置(“名称”、“巴加海滩”);
第4行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第4行);
HashMap row5=新的HashMap();
第5行。投入(“ID”,5);
第5行。放置(“图像”,R.drawable.calangute_海滩);
第5行。放置(“名称”、“卡兰古特海滩”);
第5行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第5行);
HashMap row6=新的HashMap();
第6行。投入(“ID”,6);
第6行。put(“图像”,R.drawable。坎多利姆尤海滩);
第6行。放置(“名称”、“坎多利姆海滩”);
第6行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第6行);
HashMap row7=新的HashMap();
第7行。投入(“ID”,7);
第7行。放置(“图像”,R.drawable。米拉马鲁海滩);
第7行。放置(“名称”、“米拉玛海滩”);
第7行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第7行);
HashMap row8=新的HashMap();
第8行。投入(“ID”,8);
第8行。放置(“图像”,R.drawable。morjim_海滩);
第8行。填写(“姓名”、“莫吉姆海滩”);
第8行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第8行);
HashMap row9=新的HashMap();
第9行。投入(“ID”,9);
第9行。放置(“图像”,R.drawable。帕洛勒姆Ə海滩);
第9行。放置(“名称”、“帕洛勒姆海滩”);
第9行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第9行);
HashMap row10=新的HashMap();
第10行。投入(“ID”,10);
第10行。put(“图像”,R.drawable。瓦加图海滩);
第10行。放置(“名称”、“瓦加特海滩”);
第10行。放置(“箭头图像”,R.可绘制。箭头图标);
添加数据(第10行);
}
类ListAdapter扩展了BaseAdapter{
私人语境;
私有数组列表;
公共ListAdapter(上下文上下文,ArrayList列表){
this.context=上下文;
this.list=列表;
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
holder=新的ViewHolder();
convertView=LayoutFlater.from(上下文)。充气(R.layout.row_beach,null,false);
holder.imgItemImage=(ImageView)convertView.findViewById(R.id.imgItemImage);
holder.imgItemArrow=(ImageView)convertView.findViewById(R.id.imgItemArrow);
holder.txtItemName=(TextView)convertView.findViewById(R.id.txtItemName);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.imgItemImage.setImageResource((整数)list.get(位置).get(“图像”);
holder.imgItemArrow.setImageResource((整数)list.get(位置).get(“箭头图像”);
holder.txtItemName.setText(list.get(position.get(“NAME”).toString());
返回视图;
}
类视图持有者{
图像视图imgItemImage;
图像视图imgItemArrow;
TextView txtItemName;
}
}
}
activity_main.xml

row_beach.xml

您需要将ListView添加到每个片段布局中,即:

1) 活动\u main.xml中的布局应该是您在中使用的:布局.beach\u fragment.xml布局.other\u fragment.xml。因此,将该布局的内容移动到片段布局

2) 在每个片段中,获取对ListView的引用,并以与活动中相同的方式构建适配器

基本上,您需要将活动中的逻辑移动到每个片段中。 所以我会这样做:

(a)

///

b) 在你的海滩和其他碎片中,扩展基础碎片和im
MainActivity.java

package com.example.goa;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Choreographer.FrameCallback;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;



public class MainActivity extends Activity 
{

private ListView listView;
private ArrayList<HashMap<String,Object>> data;
private ListAdapter adapter;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView = (ListView) findViewById(R.id.listView);

    data = new ArrayList<HashMap<String, Object>>();
    prePareListData();
    adapter = new ListAdapter(this,data);
    listView.setAdapter(adapter);


}
private void prePareListData(){

    HashMap<String,Object> row1 = new HashMap<String, Object>();
    row1.put("ID",1);
    row1.put("IMAGE",R.drawable.aguada_beach);
    row1.put("NAME","Aguada Beach");
    row1.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row1);

    HashMap<String,Object> row2 = new HashMap<String, Object>();
    row2.put("ID",2);
    row2.put("IMAGE",R.drawable.anjuna_beach);
    row2.put("NAME","Anjuna Beach");
    row2.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row2);

    HashMap<String,Object> row3 = new HashMap<String, Object>();
    row3.put("ID",3);
    row3.put("IMAGE",R.drawable.arambol_beach);
    row3.put("NAME","Arambol Beach");
    row3.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row3);


    HashMap<String,Object> row4 = new HashMap<String, Object>();
    row4.put("ID",4);
    row4.put("IMAGE",R.drawable.baga_beach);
    row4.put("NAME","Baga Beach");
    row4.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row4);

    HashMap<String,Object> row5 = new HashMap<String, Object>();
    row5.put("ID",5);
    row5.put("IMAGE",R.drawable.calangute_beach);
    row5.put("NAME","Calangute beach");
    row5.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row5);


    HashMap<String,Object> row6 = new HashMap<String, Object>();
    row6.put("ID",6);
    row6.put("IMAGE",R.drawable.candolim_beach);
    row6.put("NAME","Candolim Beach");
    row6.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row6);

    HashMap<String,Object> row7 = new HashMap<String, Object>();
    row7.put("ID",7);
    row7.put("IMAGE",R.drawable.miramar_beach);
    row7.put("NAME","Miramar Beach");
    row7.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row7);

    HashMap<String,Object> row8 = new HashMap<String, Object>();
    row8.put("ID",8);
    row8.put("IMAGE",R.drawable.morjim_beach);
    row8.put("NAME","Morjim Beach");
    row8.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row8);


    HashMap<String,Object> row9 = new HashMap<String, Object>();
    row9.put("ID",9);
    row9.put("IMAGE",R.drawable.palolem_beach);
    row9.put("NAME","Palolem Beach");
    row9.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row9);

    HashMap<String,Object> row10 = new HashMap<String, Object>();
    row10.put("ID",10);
    row10.put("IMAGE",R.drawable.vagator_beach);
    row10.put("NAME","Vagator Beach");
    row10.put("ARROWIMAGE",R.drawable.arrow_icon);
    data.add(row10);


}

class ListAdapter extends BaseAdapter{

    private Context context;
    private ArrayList<HashMap<String,Object>> list;
    public ListAdapter(Context context,ArrayList<HashMap<String,Object>> list){
        this.context = context;
        this.list = list;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView == null){
            holder = new ViewHolder();
            convertView = LayoutInflater.from(context).inflate(R.layout.row_beach,null,false);
            holder.imgItemImage = (ImageView) convertView.findViewById(R.id.imgItemImage);
            holder.imgItemArrow = (ImageView) convertView.findViewById(R.id.imgItemArrow);
            holder.txtItemName = (TextView) convertView.findViewById(R.id.txtItemName);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.imgItemImage.setImageResource((Integer)list.get(position).get("IMAGE"));
        holder.imgItemArrow.setImageResource((Integer)list.get(position).get("ARROWIMAGE"));
        holder.txtItemName.setText(list.get(position).get("NAME").toString());

        return convertView;
    }

    class ViewHolder{
        ImageView imgItemImage;
        ImageView imgItemArrow;
        TextView  txtItemName;
    }
 }

}

  activity_main.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:background="@android:color/background_light"
 >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>
 row_beach.xml


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">

<ImageView
    android:id="@+id/imgItemImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:src="@drawable/ic_launcher" />

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_marginLeft="5dp"
    android:layout_weight="0.92" >

    <TextView
        android:id="@+id/txtItemName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textColor="@android:color/black"/>
</LinearLayout>

<ImageView
    android:id="@+id/imgItemArrow"
    android:layout_width="15dp"
    android:layout_height="15dp"
    android:src="@drawable/ic_launcher"
    android:layout_marginRight="5dp"/>
public abstract class BaseListFragment extends Fragment {

   protected ListView mListView;
   protected BaseAdapter mAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){

        View view = inflater.inflate(getLayoutId(),parent,false);
        mListView = view.findViewById(R.id.listview);
        return view;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
          super.onViewCreated(view,savedInstanceState);

          mAdapter = newListAdapter();
          mListView.setAdapter(mAdapter);

    }

    //Build your adapter with data that you need by implementing this.
    protected abstract BaseAdapter newListAdapter();
    // This is the layout id that you use to inflate the view
    protected abstract int getLayoutId();
}
public class Beaches extends BaseListFragment {

  private List<HashMap<String,Object>> data ; // this is the list you defined in your main Activity.

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
      return super.onCreateView(inflater,parent,savedInstanceState);

  }

  @Override
  public BaseAdapter newListAdapter(){
      // call your  prePareListData();
      prePareListData();
      return new ListAdapter(this,data);
  }

  @Override
  public int getLayoutId(){
      return R.layout.beach_fragment;
  }
}