zoukankan      html  css  js  c++  java
  • Android ListFragment实例Demo(自己定义适配器)

    上一篇文章介绍了ListFragment,当中的ListView并没有自己定义适配器,实际上在实际开发中常会用到自己定义适配器,是实现更复杂的列表数据展示。

    所以这篇文章添加了自己定义适配器。来进行ListView数据的展示。

    实现效果图:

    左边是Activity中的一个button。点击button会出现右边的Fragment对应的数据列表。


    代码展示:

    布局文件:

    activity_main:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
    
        <LinearLayout
            android:id="@+id/left"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" 
            android:background="#DDCCFF">
    
    
            <Button
                android:id="@+id/button1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="显示列表" />
    
    
        </LinearLayout>
    
    
        <LinearLayout
            android:id="@+id/right"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:orientation="vertical" 
            android:background="#DDFFCC">
        </LinearLayout>
    
    
    </LinearLayout>

    article.xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <ListView
            android:id="@id/android:list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>
    
    </LinearLayout>

    item.xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
       <TextView 
           android:id="@+id/textView"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textSize="20sp"/>
    
    </LinearLayout>
    代码文件:

    package com.fragmentdemo9_listfragment2;
    
    import android.app.Activity;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    /**
     *ListFragment的实例Demo优化版一。 
     *
     */
    public class MainActivity extends Activity {
    	private Button button;
    	private FragmentManager manager;
    	private FragmentTransaction transaction;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		manager = getFragmentManager();
    		button = (Button) findViewById(R.id.button1);
    		button.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				transaction = manager.beginTransaction();
    				ArticleListFragment articleListFragment = new ArticleListFragment();
    				transaction.replace(R.id.right, articleListFragment, "right");
    				transaction.commit();
    			}
    		});
    	}
    
    }
    

    ArticleListFragment.java:

    package com.fragmentdemo9_listfragment2;
    
    import java.util.ArrayList;
    
    import android.app.ListFragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ListView;
    import android.widget.Toast;
    /**
     * 本例中的唯一一个Fragment
     * @author Administrator
     *
     */
    public class ArticleListFragment extends ListFragment {
    	private MyAdapter adapter;
    	private ArrayList<String> list = new ArrayList<String>();
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		
    		for (int i = 0; i < 30; i++) {
    			list.add("item" + i);
    		}
    		adapter = new MyAdapter(getActivity(), list);
    	}
    
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		View view = inflater.inflate(R.layout.article, null);
    		setListAdapter(adapter);
    		return view;
    	}
    	@Override
    	public void onListItemClick(ListView l, View v, int position, long id) {
    		super.onListItemClick(l, v, position, id);
    		Toast.makeText(getActivity(), list.get(position), Toast.LENGTH_SHORT).show();
    	}
    
    }
    

    MyAdapter:

    package com.fragmentdemo9_listfragment2;
    
    import java.util.ArrayList;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    /**
     * 自己定义适配器MyAdapter
     *
     */
    public class MyAdapter extends BaseAdapter {
    	private ArrayList<String> list;
    	private Context context;
    
    	public MyAdapter(Context context, ArrayList<String> list) {
    		this.list = list;
    		this.context = context;
    	}
    
    	@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 = new ViewHolder();
    		;
    		if (convertView == null) {
    			convertView = LayoutInflater.from(context).inflate(R.layout.item,
    					null);
    			holder.textView = (TextView) convertView
    					.findViewById(R.id.textView);
    			convertView.setTag(holder);
    		} else {
    			holder = (ViewHolder) convertView.getTag();
    		}
    		holder.textView.setText(list.get(position).toString());
    
    		return convertView;
    	}
    
    	class ViewHolder {
    		TextView textView;
    	}
    }
    

    源码下载:

    点击下载源代码

  • 相关阅读:
    Codeforces 177G2 Fibonacci Strings KMP 矩阵
    Codeforces Gym100187C Very Spacious Office 贪心 堆
    Codeforces 980F Cactus to Tree 仙人掌 Tarjan 树形dp 单调队列
    AtCoder SoundHound Inc. Programming Contest 2018 E + Graph (soundhound2018_summer_qual_e)
    BZOJ3622 已经没有什么好害怕的了 动态规划 容斥原理 组合数学
    NOIP2016提高组Day1T2 天天爱跑步 树链剖分 LCA 倍增 差分
    Codeforces 555C Case of Chocolate 其他
    NOIP2017提高组Day2T3 列队 洛谷P3960 线段树
    NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp
    NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5325281.html
Copyright © 2011-2022 走看看