SQLIte数据库--ArrayAdapter适配器
2017-05-20 12:22
162 查看
在使用ListView时需要对其进行数据适配。为了实现这个功能,Android系统提供了一系列的适配器对ListView进行适配。可以将适配器理解为截面数据绑定。适配器就像显示器,把复杂的数据按人们易于接受的方式来展示。
这里主要介绍ArrayAdapter。
ArrayAdapter时候BaseAdapter的子类,开发者需要在构造方法里传入相应的参数即可适配数据。
package bzu.edu.cn.news;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.loopj.android.image.SmartImageView;
import java.util.List;
public class NewsAdapter extends ArrayAdapter<NewsInfo>{
public NewsAdapter(Context context, List<NewsInfo> objects) {
super(context, R.layout.news_item, objects);
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
NewsInfo newsinfo= getItem(position);//传递position,获取当前位置对应的newsinfo新闻信息
View view=null;
viewHolder viewHolder;
if(convertView==null){ //判断convertView中是否加载了布局,有没有缓存。为空说明没有缓存
view=LayoutInflater.from(getContext()).inflate(R.layout.news_item,null);
viewHolder=new viewHolder();
viewHolder.siv= (SmartImageView) view.findViewById(R.id.siv_icon);
viewHolder.tv_title= (TextView) view.findViewById(R.id.tv_title);
viewHolder.tv_description= (TextView) view.findViewById(R.id.tv_description);
viewHolder.tv_type= (TextView) view.findViewById(R.id.tv_type);
view.setTag(viewHolder); //保存
}else{
view=convertView;
viewHolder=(viewHolder) view.getTag();
}
viewHolder.tv_title.setText(newsinfo.getTitle());//传递题目
viewHolder.tv_description.setText(newsinfo.getDescription());
viewHolder.tv_type.setText(newsinfo.getType());
return view;
}
class viewHolder{//添加类,封装需要查找的控件
TextView tv_title;
TextView tv_description;
TextView tv_type;
SmartImageView siv;
}
}
MainActivity中
public class MainActivity extends AppCompatActivity {
private ListView lv_news;
private LinearLayout loading;
private List<NewsInfo> newsInfos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lv_news=(ListView)findViewById(R.id.lv_news);
loading=(LinearLayout)findViewById(R.id.loading);
fillData2();
//setContentView(R.layout.activity_main);
}
适配器这一块掌握的不好,不会写。所以单独拿出来了。
这里主要介绍ArrayAdapter。
ArrayAdapter时候BaseAdapter的子类,开发者需要在构造方法里传入相应的参数即可适配数据。
package bzu.edu.cn.news;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.loopj.android.image.SmartImageView;
import java.util.List;
public class NewsAdapter extends ArrayAdapter<NewsInfo>{
public NewsAdapter(Context context, List<NewsInfo> objects) {
super(context, R.layout.news_item, objects);
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
NewsInfo newsinfo= getItem(position);//传递position,获取当前位置对应的newsinfo新闻信息
View view=null;
viewHolder viewHolder;
if(convertView==null){ //判断convertView中是否加载了布局,有没有缓存。为空说明没有缓存
view=LayoutInflater.from(getContext()).inflate(R.layout.news_item,null);
viewHolder=new viewHolder();
viewHolder.siv= (SmartImageView) view.findViewById(R.id.siv_icon);
viewHolder.tv_title= (TextView) view.findViewById(R.id.tv_title);
viewHolder.tv_description= (TextView) view.findViewById(R.id.tv_description);
viewHolder.tv_type= (TextView) view.findViewById(R.id.tv_type);
view.setTag(viewHolder); //保存
}else{
view=convertView;
viewHolder=(viewHolder) view.getTag();
}
viewHolder.tv_title.setText(newsinfo.getTitle());//传递题目
viewHolder.tv_description.setText(newsinfo.getDescription());
viewHolder.tv_type.setText(newsinfo.getType());
return view;
}
class viewHolder{//添加类,封装需要查找的控件
TextView tv_title;
TextView tv_description;
TextView tv_type;
SmartImageView siv;
}
}
MainActivity中
public class MainActivity extends AppCompatActivity {
private ListView lv_news;
private LinearLayout loading;
private List<NewsInfo> newsInfos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lv_news=(ListView)findViewById(R.id.lv_news);
loading=(LinearLayout)findViewById(R.id.loading);
fillData2();
//setContentView(R.layout.activity_main);
}
适配器这一块掌握的不好,不会写。所以单独拿出来了。
相关文章推荐
- [cocos2d]调用sqlite3数据库
- unity3d的Sqlite的数据库读取,各平台
- Android之轻量数据库SQLite
- 2015.1.8,第五节课Android SQLite数据库的操作
- SQLite系列免费/开源数据库组件/应用
- [转载]Unity3D 游戏引擎之使用C#语言建立本地数据库(SQLITE)
- SQLite 数据库调研
- Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作
- SQLite Android嵌入式数据库操作
- 【Win10】在应用中使用 SQLite 数据库
- sqliteExpert软件使用(创建数据库和表)
- Android-数据库详解之一:SQLite关键字以及语法
- 数据缓存——SQLite关系型数据库的使用
- android手机命令行下不能使用sqlite3命令查看*.db数据库文件解决办法
- sqlite 数据库使用
- Android SQLite数据库版本升级原理解析
- PHP数据库(Sqlite)两种操作方法
- Android数据库编程SQLite
- Xamarin android使用Sqlite做本地存储数据库