ListView 实现新闻案列(大神可以走了,本人新手):
第一步没啥好说的:创建布局页面,代码走起:
<?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">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
第二步:布局创建好了 我们接下来去MainActivity中初始化listview
ListView listview = (ListView) findViewById(R.id.listview);
我们最好把listView设为全局变量,如下:
private ListView listview ;
listview = (ListView) findViewById(R.id.listview);
这样我们想用listView的时候可以直接用。
listVie的初始化已经好了,接下来才是重点:
1.首先创建三个包,分别Adaper包,mybean包和Utis包,分别存放适配器,封装数据类和集合类,(因为要模仿本地数据所以要把数据封装到集合中)。
2.mybean包下创建Mybean类
public class MyBean {
private String item;//要显示的条目
private String des;//要显示的内容
public String url;//点击条目跳转的地址
private Drawable icon;//显示的图片
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public String getDes() {
return des;
}
public void setDes(String des) {
this.des = des;
}
public Drawable getIcon() {
return icon;
}
public void setIcon(Drawable icon) {
this.icon = icon;
}
}
----------
3.在adaper包下创建MyAdaper类:
public class myAdaper extends BaseAdapter {
private final ArrayList<MyBean> list;//把数据存到集合中
private final Context context;//
public myAdaper(Context context,ArrayList<MyBean> list) {
//初始化MyBean的数据
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();//要显示的天目数量,可以自己手动写如:return 10;这样在手机上只能显示10条,
}
@Override
public Object getItem(int position) {
return list.get(position);//墨认是null,获取点击天目的位置,
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;//是一个模板
if (convertView != null) {
view = convertView;
} else {
view = View.inflate(context, R.layout.activity_item, null);
//这里还要创建一个布局文件,以为我们药设置数据
}
TextView tv_01 = (TextView) view.findViewById(R.id.tv_01);
TextView tv_02 = (TextView) view.findViewById(R.id.tv_02);
ImageView im_01 = (ImageView) view.findViewById(R.id.im_01);
MyBean myBean = list.get(position);
tv_01.setText(myBean.getItem());
tv_02.setText(myBean.getDes());
im_01.setImageDrawable(myBean.getIcon());
return view;
}
}
创建第二个布局文件
<?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:gravity="center_vertical"
android:padding="10dp"
>
<ImageView
android:id="@+id/im_01"
android:layout_width="68dp"
android:layout_height="68dp"
android:src="@color/colorPrimaryDark" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:maxLines="1"
android:id="@+id/tv_01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="item"
android:textSize="18dp" />
<TextView
android:maxLines="3"
android:id="@+id/tv_02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="要显示的内容" />
</LinearLayout>
</LinearLayout>
4.在Utis下创建NewsUtis类
因为没有联网所以自己谁便编写一些数据当演示
public class NewsUtis {
public static ArrayList<MyBean> getAllNews(Context context) {
ArrayList<MyBean> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
MyBean myBean = new MyBean();
myBean.setItem("最后一批环保督察组进驻8省 多语种接收举报:");
myBean.setDes("昨日下午,中央第六环境保护督察组进驻西藏自治区,至此,第四批即最后一批8个中央环境保护督察组全部实现督察进驻。8个中央环境保护督察组分别负责对8个省份," +
"即吉林、浙江、山东、海南" +
"、四川、西藏、青海、新疆(含兵团)开展环境保护督察工作。");
myBean.setIcon(context.getResources().getDrawable(R.drawable.ic_launcher));
myBean.url="http://news.china.com.cn/2017-08/16/content_41417171.htm";
list.add(myBean);
MyBean myBean1 = new MyBean();
myBean1.setItem("南方暴雨又至 今年汛期这些人抗洪不力被问责");
myBean1.setDes("中新网北京8月16日电(记者阚枫)近期,新一轮强降雨再度袭击南方多地,部分地区出现暴雨洪涝灾害。今年汛期,多地发文强调防汛救灾期间的工作纪律,严惩救灾推诿扯皮、擅离职守、" +
"瞒报迟报等行为,一些干部也因汛期擅离职守、顶风违纪等原因被问责。");
myBean1.setIcon(context.getResources().getDrawable(R.drawable.icon2));
myBean1.url="http://news.china.com.cn/2017-08/16/content_41417179.htm";
list.add(myBean1);
MyBean myBean2 = new MyBean();
myBean2.setItem("公安局");
myBean2.setDes("多部门联手打击传销,这些传销行骗套路需警惕");
myBean2.setIcon(context.getResources().getDrawable(R.drawable.icon));
myBean2.url="http://www.baidu.com";
list.add(myBean2);
}
return list;
}
}
最后再MainActivity写入以下代码:
public class MainActivity extends AppCompatActivity {
private Context mContext;
protected ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main01);
mContext = this;
ArrayList<MyBean> allNews = NewsUtis.getAllNews(mContext);
listview = (ListView) findViewById(R.id.listview);
listview.setAdapter(new myAdaper(mContext, allNews));
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MyBean itemAtPosition = (MyBean) parent.getItemAtPosition(position);
String url = itemAtPosition.url;
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
}
}
这样一个简单的新闻案列就出来了,就实现简单的实现了点击按钮。其他啥的全都没有。给新生看看。