简单实现一个Android ListView分类

最近在做一个关于招聘的APP,里面有选择城市一项,是用listview分类,有的人说两个listview嵌套,但是感觉太麻烦了,比较listview底层太复杂,有的人用expandablelistview,但是感觉效果一样不好,所以写了一个比较简单的,希望对大家有帮助!

1.首先看MainActivity类!

其实跟普通的代码一样,只是多了一个MyBean类!

package com.zhaoqingyuan.zhaoqingyuan;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class MainActivity extends Activity {
	private ListView listView;
	private MyAdapter myAdapter;
	private List<MyBean>list=new ArrayList<MyBean>();//装数据的
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		listView=(ListView) findViewById(R.id.listView1);
		
		//装数据了
		//当前位置
		MyBean myBean=new MyBean("当前位置", "北京");
		list.add(myBean);
		//热门城市
		String[] hotCity={"全国","北京","上海","武汉","广州","天津","太原","南京","深圳","重庆","昆明","拉萨","石家庄","哈尔滨","贵阳"};
		for (int i = 0; i < hotCity.length; i++) {
			MyBean myBean2=new MyBean("热门城市", hotCity[i]);
			list.add(myBean2);
		}
		//热门城市
		
		String[] province={"河北省","河南省","云南省","辽宁省","黑龙江省","湖南省","安徽省","山东省","江苏省","浙江省",
				" 江西省","湖北省","甘肃省","山西省","内蒙古","陕西省","吉林省","福建省","贵州省","广东省",
				"青海省","西藏","四川省","宁夏回族","海南省","台湾省"};
		for (int i = 0; i < province.length; i++) {
			MyBean myBean3=new MyBean("按省份选择城市", province[i]);
			list.add(myBean3);
		}
		
		myAdapter=new MyAdapter(MainActivity.this, list);
		listView.setAdapter(myAdapter);
	}
}
2.这个是Bean类,里面有get和set方法!

package com.zhaoqingyuan.zhaoqingyuan;

public class MyBean {

	private String series;
	private String city;//可以替代省份名称
	public MyBean(String series,String city) {
		setSeries(series);
		setCity(city);
	}
	public String getSeries() {
		return series;
	}
	public void setSeries(String series) {
		this.series = series;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	
	
}
3.接下来就是我们在熟悉不过的适配器了!就是多了两行代码而已!

package com.zhaoqingyuan.zhaoqingyuan;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {
	private Context context;
	private List<MyBean>list=new ArrayList<MyBean>();
	public MyAdapter(Context context,List<MyBean>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;
	}
	Holder holder;
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		holder=new Holder();
		if (convertView==null) {
			convertView=LayoutInflater.from(context).inflate(R.layout.item, null);
			holder.tv_series=(TextView) convertView.findViewById(R.id.tv_series);
			holder.tv_city=(TextView) convertView.findViewById(R.id.tv_city);
			convertView.setTag(holder);
		}else {
			holder=(Holder) convertView.getTag();
		}
		String series1=list.get(position).getSeries();
		String series2=position-1>=0?list.get(position-1).getSeries():"";
		if (!series1.equals(series2)) {
			holder.tv_series.setVisibility(View.VISIBLE);
			System.out.println(position);
			holder.tv_series.setText(series1);
			holder.tv_city.setText(list.get(position).getCity());
		}else {
			holder.tv_series.setVisibility(View.GONE);
			holder.tv_city.setText(list.get(position).getCity());
		}
		
		
		return convertView;
	}
	
	private class Holder{
		TextView tv_series,tv_city;
	}

}
4.来看下简单的XML代码

<RelativeLayout 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/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true">
    </ListView>

</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_series"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/darker_gray"
        android:visibility="gone"
        android:padding="5dip"
        android:textSize="18dip"
        android:text="TextView" />

    <TextView
        android:id="@+id/tv_city"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dip"
        android:textSize="18dip"
        android:text="TextView" />

</LinearLayout>
OK了,大功告成,让我们看一下效果吧!



 源码点击此处下载




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以给您提供一个基于Android Studio的简单图书管理系统的开发思路和步骤: 1. 创建一个新的Android Studio项目,并创建一个图书管理系统的主界面。 2. 在主界面上添加一些按钮,如添加图书、删除图书、借阅图书、归还图书等。 3. 创建一个SQLite数据库,并在数据库中创建一个图书表,该表包含书名、作者、出版社、ISBN、库存、借阅状态、借阅历史等字段。 4. 在图书管理系统中,为每个按钮添加一个响应函数,用于执行相应的操作,如添加图书、删除图书、借阅图书、归还图书等。 5. 在图书管理系统中,创建一个视图用于显示图书信息。该视图可以使用ListView或RecyclerView控件实现。 6. 在图书管理系统中,为每个图书添加一个响应函数,用于显示图书详细信息。该响应函数可以使用AlertDialog或自定义Dialog实现。 7. 在图书管理系统中,为每个图书添加一个响应函数,用于更新图书信息。该响应函数可以使用AlertDialog或自定义Dialog实现。 8. 在图书管理系统中,添加一个搜索功能,用于根据关键字查找图书信息。该搜索功能可以使用EditText和Button控件实现。 9. 在图书管理系统中,添加一个分类功能,用于根据图书类型分类显示图书信息。该分类功能可以使用Spinner或RadioGroup控件实现。 10. 在图书管理系统中,添加一个用户登录功能,用于保护用户信息和图书信息。该用户登录功能可以使用SharedPreferences或SQLite数据库实现。 希望这些建议能够对您的Android Studio图书管理系统开发有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小_源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值