带选项卡片段的android listView
我已经创建了一个有两个选项卡的页面,在这两个选项卡中,我想添加一个列表,其中每行都有名称和图像。因此,我分别使用图像对listview进行了编码,但我对如何在选项卡片段页面中添加listview感到困惑。有人能帮我吗。下面是我的代码。 多谢各位 选项卡片段的代码:- TabPagerAdapter.java带选项卡片段的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
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;
}
}