下拉刷新可以用ListView实现
主要代码如下:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.jane0611_test.MainActivity"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv_main_list"></ListView> </android.support.constraint.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="blocksDescendants"> <ImageView android:layout_width="50dp" android:layout_height="50dp" android:id="@+id/iv_item_listview_icon" android:src="@drawable/dog"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/tv_item_listview_title" android:text="默认文字" android:textSize="30sp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下载" android:id="@+id/btn_item_listview_download"/> </LinearLayout>
以上是界面代码,
package com.example.jane0611_test; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; /** * Created by Administrator on 2017/6/11 0011. */ public class ItemTag { public ImageView iamgeView; public TextView textView; public Button button; }
package com.example.jane0611_test; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.example.jane0611_test.R.id.iv_item_listview_icon; public class MainActivity extends AppCompatActivity { private ListView lv_main_list; private int images[]={R.drawable.bird,R.drawable.dragon,R.drawable.cat,R.drawable.elephant,R.drawable.fish}; private String titles[]={"大大","小小","一一","二二" ,"三三"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv_main_list = (ListView) findViewById(R.id.lv_main_list); // List<Map<String,Object>> list=new ArrayList<>(); // for (int i = 0; i < images.length; i++) { // Map<String,Object> map=new HashMap<>(); // map.put("image",images[i]); // map.put("title",titles[i]); // list.add(map); // } // 实例化SimpleAdapter // SimpleAdapter adapter=new SimpleAdapter(this,list,R.layout.item_listview,new String[]{"image","title"},new int[]{R.id.iv_item_listview_icon,R.id.tv_item_listview_title}); lv_main_list.setAdapter(new MyAdapter()); //给ListView设置点击事件 lv_main_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "跳转到"+titles[position%titles.length], Toast.LENGTH_SHORT).show(); } }); } //OOM OutOfMemory内存溢出 class MyAdapter extends BaseAdapter{ //指定listview有多少行数据 @Override public int getCount() { return 10000; } //点击获取这一行的内容 @Override public Object getItem(int position) { return titles[position%titles.length]; } //返回每一行的下标 @Override public long getItemId(int position) { return position; } //会拿到每一行的视图,有多少行数据就调多少次 @Override public View getView(final int position, View convertView, ViewGroup parent) { //把布局文件转成View if(convertView==null){ convertView=getLayoutInflater().inflate(R.layout.item_listview,null); ItemTag itemTag=new ItemTag(); itemTag.iamgeView= (ImageView) convertView.findViewById(iv_item_listview_icon); itemTag.textView= (TextView) convertView.findViewById(R.id.tv_item_listview_title); itemTag.button= (Button) convertView.findViewById(R.id.btn_item_listview_download); convertView.setTag(itemTag); } ItemTag itemTag= (ItemTag) convertView.getTag(); //设值 itemTag.iamgeView.setImageResource(images[position%titles.length]); itemTag.textView.setText(titles[position%titles.length]); //给按钮设置点击事件 itemTag.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "正在下载"+titles[position%titles.length], Toast.LENGTH_SHORT).show(); } }); return convertView; } } }
package com.example.jane0611_test; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2017/6/12 0012. */ public class PullToRefreshActivity extends AppCompatActivity { private PullToRefreshListView ptrlv_refresh; private List<String> list=new ArrayList<>(); private ArrayAdapter adapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pulltorefresh); ptrlv_refresh = (PullToRefreshListView) findViewById(R.id.ptrlv_refresh); for (int i = 0; i < 10; i++) { list.add("数据"+i); } adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,list); ptrlv_refresh.setAdapter(adapter); // 给listView设置下拉刷新的监听 ptrlv_refresh.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { new MyTask().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { } }); } class MyTask extends AsyncTask{ //在后台获取数据 //内部有线程机制 @Override protected Object doInBackground(Object[] params) { for (int i = 0; i < 3; i++) { list.add("加上数据"+i); } return null; } //更新UI @Override protected void onPostExecute(Object o) { super.onPostExecute(o); ptrlv_refresh.onRefreshComplete(); //通知适配器数据,发生改变 adapter.notifyDataSetChanged(); } } }
以上是效果图