`
lihao312
  • 浏览: 483365 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android自定义ListFragment 显示

阅读更多
1.继承ListFragment类, 实现方法getView方法
package com.lance.sample;

import java.util.ArrayList;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;

public class UserListFragment extends ListFragment {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		ArrayList<User> mUsers = UserDB.get().getUsers();
		UserAdapter adapter = new UserAdapter(mUsers);
		setListAdapter(adapter);
	}
	
	/**
	 * Listener List item click event
	 */
	public void onListItemClick(ListView l, View v, int position, long id) {
		User user = (User)getListAdapter().getItem(position);
		Intent intent = new Intent(getActivity(), UserDetailActivity.class);
		intent.putExtra(UserDetailFragment.USER_ID, user.getId());
		startActivity(intent);
	}
	
	/**
	 * rewrite getView method
	 * @author lance
	 */
	private class UserAdapter extends ArrayAdapter<User>{
		
		public UserAdapter(ArrayList<User> mUsers) {
			super(getActivity(), 0, mUsers);
		}
		
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			if(convertView == null) {
				convertView = getActivity().getLayoutInflater().inflate(R.layout.activity_list_item, null);
			}
			
			User user = getItem(position);
			
			CheckBox vipBox = (CheckBox)convertView.findViewById(R.id.list_item_vip);
			vipBox.setChecked(user.isVip());
			
			TextView nameText = (TextView)convertView.findViewById(R.id.list_item_name);
			nameText.setText(user.getName());
			
			TextView cardNoText = (TextView)convertView.findViewById(R.id.list_item_cardno);
			cardNoText.setText(String.valueOf(user.getCardNo()));
			
			return convertView;
		}
	}
}



2.定义显示view文件activity_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:paddingTop="4dp">

    <CheckBox
        android:id="@+id/list_item_vip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:padding="6dp"
        android:layout_marginTop="4dp"
        android:text="@string/list_item_vip" 
        android:focusable="false"/>

    <TextView
        android:id="@+id/list_item_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="4dp"
        android:paddingRight="4dp"
        android:textStyle="bold"
        android:layout_toLeftOf="@id/list_item_vip"
        android:text="@string/list_item_name" />

    <TextView
        android:id="@+id/list_item_cardno"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/list_item_name"
        android:layout_toLeftOf="@id/list_item_vip"
        android:padding="4dp"
        android:text="@string/list_item_name" />

</RelativeLayout>



3.fragment托管给activity
package com.lance.sample;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;

/**
 * 提供基本FragmentActivity, 供list列表和detail用
 * @author lance
 */
public abstract class BaseFragmentActivity extends FragmentActivity {
	/**
	 * create fragment
	 * @return
	 */
	protected abstract Fragment createFrag();
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		FragmentManager fm = getSupportFragmentManager();
		Fragment fragment = fm.findFragmentById(R.id.frag_container);
		if(fragment == null) {
			fragment = createFrag();
			fm.beginTransaction()
				.add(R.id.frag_container, fragment)
				.commit();
		}
	}
}


效果图






附件完整项目
  • 大小: 417.1 KB
  • 大小: 591.7 KB
0
2
分享到:
评论

相关推荐

    左边listfragment显示标题右边fragment显示内容

    标题"左边listfragment显示标题右边fragment显示内容"正是描述了这样一个场景,它强调在手机横屏模式下,使用Fragment而非Activity来展示内容。 Fragment是Android SDK中的一个组件,它允许开发者在单个Activity中...

    Android ListFragment实例Demo(自定义适配器)

    上一篇文章介绍了ListFragment,其中的ListView并没有自定义适配器,实际上在实际开发中常会用到自定义适配器,是实现更复杂的列表数据展示。所以这篇文章增加了自定义适配器,来进行ListView数据的展示

    android之fragment之ListFragment

    2. **简化UI布局**:由于`ListFragment`专注于显示列表,因此它的布局结构相对简单,减少了对自定义布局的需求。 3. **交互处理**:`ListFragment`提供了默认的点击事件处理,当用户点击列表项时,会自动调用`...

    Android ListFragment实例Demo

    首先,`ListFragment`的主要用途是在Activity中展示一个可滚动的列表,通常用于显示大量结构化的数据。它简化了设置`ListView`所需的代码,因为`ListFragment`内部已经包含了`ListView`。开发者只需要关注数据源和...

    android Fragment 实例 ListFragment listiew 下拉刷新 上拉加载 横向滑动事件监听

    这个文件名可能表示一个示例项目,包含了自定义ListFragment的代码。在这个示例中,开发者可能创建了一个名为`CustomListFragment`的类,实现了上述的所有功能:下拉刷新、上拉加载和横向滑动事件监听。通过查看源...

    android-listfragment:Android ListFragment 示例。 (活动xml中的片段元素)

    在Android开发中,`ListFragment`是Android Support Library或AndroidX库的一部分,它是一个轻量级的组件,用于在活动中展示列表数据。`ListFragment`是`Fragment`的一个子类,专为显示`ListView`而设计,简化了在...

    Android之listfragment的使用例子

    在这个例子中,`MyListFragment` 是自定义的 `ListFragment` 类,需要重写 `onActivityCreated()` 方法,为 `ListView` 设置适配器和数据源。例如: ```java public class MyListFragment extends ListFragment ...

    使用了 ListFragment 类显示 ShakespeareIntrumented(莎士比亚著作)

    在Android应用开发中,`ListFragment` 是一个非常实用的组件,它继承自 `Fragment` 类,主要用于在界面上展示列表数据。在这个场景中,我们看到的项目是关于使用 `ListFragment` 来显示莎士比亚的作品。让我们深入...

    Android-ListFragment

    同时,也可以通过自定义`onCreateView()`方法来自定义`ListFragment`的布局,添加额外的UI元素。 总结,`ListFragment`是Android开发中处理列表界面的一种高效方式,它简化了`ListView`的集成,并提供了许多便利的...

    DialogFragment和ListFragment使用

    例如,`DialogFragment`可以用来显示设置或帮助信息,而`ListFragment`则展示主界面的数据列表。当用户点击列表项时,可以启动一个`DialogFragment`来提供更详细的信息。 ### 示例代码 以下是一个简单的`...

    Android App中使用ListFragment的实例教程

    在Android应用程序开发中,ListFragment是Android SDK提供的一种特殊类型的Fragment,它的主要功能是展示一个列表视图(ListView)。ListFragment简化了在Activity中集成列表展示的流程,因为它内置了对ListView的...

    ListFragment

    - **布局文件**:虽然`ListFragment`会自动处理大部分布局,但有时我们可能需要自定义它的外观。可以通过覆写`onCreateView()`方法并返回一个包含`ListView`的视图来实现。 - **数据源**:首先,你需要有一个数据...

    android_custom_swipe_refresh_listfragment:Android 自定义滑动刷新列表片段,带有加载指示器和空 ListAdapter 时尝试加载按钮

    Android 自定义滑动刷新列表片段 有 3 种状态: 1. 等待 ListAdapter 将被设置 2. ListAdapter 已设置,但 ListView 没有记录(项目) 3. ListAdapter 设置有 ListView 的记录(项目)。 此外,当将记录(项目)添加...

    android获取wifi列表

    本教程将详细介绍如何基于ListFragment框架来实现这一功能,这对于初学者来说是一个很好的实践项目,能够帮助巩固和提升Android开发的基本技能。 首先,我们需要理解ListFragment的概念。ListFragment是Android ...

    Android中findViewById返回为空null的快速解决办法

    在Android开发过程中,`findViewById`方法是用于查找指定ID的视图对象,但有时我们可能会遇到`findViewById`返回`null`的情况。这个问题通常出现在尝试访问一个尚未初始化或者不存在于当前视图层次结构中的视图时。...

    使用baseAdapter显示list

    在Android开发中,显示列表数据是一项常见的任务,`BaseAdapter`是Android SDK提供的一种机制,用于将数据绑定到可滚动视图,如ListView、GridView等。`BaseAdapter`充当了数据源与视图之间的桥梁,使得开发者能够...

    Android Fragment使用

    1. **ListFragment介绍**:ListFragment是一个简化版的Fragment,专门用于显示一个ListView。它包含了默认的ListView布局,减少了开发者自定义布局的工作量。 2. **数据绑定**:ListFragment通常需要与Adapter配合...

    Android 开源的下拉刷新 Eclipse版本

    ListFragment是Android SDK中的一个类,用于在Fragment中展示ListView。集成下拉刷新功能后,用户在列表顶部下拉即可刷新列表内容,非常适合用来展示动态更新的数据,如新闻列表或好友动态。 六、LauncherActivity ...

    fragment-list-example:一个简单的Android应用程序中使用的ListFragment的工作示例

    - `ListFragment`默认使用暗色主题,如果需要自定义颜色,需在主题中调整。 - 适配器需与`ListView`的数据类型相匹配,否则可能导致运行时错误。 通过这个“fragment-list-example”项目,开发者可以了解并实践`...

Global site tag (gtag.js) - Google Analytics