显示ListView 展示数据
public class DataActivity extends AppCompatActivity {
ArrayList<FoodBean.DataBean> list = MainActivity.list;
private ListView listView;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data);
Log.i("-----Data", list.toString());
initView();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//添加布局
getMenuInflater().inflate(R.menu.menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
//菜单中每个item选项的监听
case R.id.tacitly:
MyAdapter.isButton=false;
listView.setBackgroundColor(getResources().getColor(R.color.white,null));
adapter.notifyDataSetChanged();
break;
case R.id.black:
MyAdapter.isButton=true;
listView.setBackgroundColor(getResources().getColor(R.color.black,null));
adapter.notifyDataSetChanged();
break;
}
return super.onOptionsItemSelected(item);
}
private void initView() {
listView = (ListView) findViewById(R.id.listView);
adapter = new MyAdapter(this,list);
listView.setAdapter(adapter);
//长点击
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
//弹出菜单
final PopupWindow popupWindow = new PopupWindow(DataActivity.this);
View inflate = LayoutInflater.from(DataActivity.this).inflate(R.layout.layout_pop, null);
popupWindow.setContentView(inflate);
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
// popupWindow.showAtLocation(view, Gravity.CENTER,0,0);
//获取布局文件中按钮
View contentView = popupWindow.getContentView();
Button button = contentView.findViewById(R.id.button_pop);
//按钮设置点击事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(DataActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
AlertDialog.Builder builder = new AlertDialog.Builder(DataActivity.this);
builder.setMessage("是否删除");
builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
list.remove(position);
adapter.notifyDataSetChanged();
}
});
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
popupWindow.dismiss();
}
});
popupWindow.showAsDropDown(view);
return true;
}
});
}
}
开启异步任务
public class MyAsyncTask extends AsyncTask<String,Integer, List<FoodBean.DataBean>> {
private Context context;
private ProgressDialog dialog;
private List<FoodBean.DataBean> list = new ArrayList();
public MyAsyncTask(Context context, List<FoodBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(context);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMax(100);
dialog.show();
super.onPreExecute();
}
@Override
protected List<FoodBean.DataBean> doInBackground(String... strings) {
InputStream is = null;
ByteArrayOutputStream baos = null;
HttpURLConnection connection = null;
try {
URL url = new URL(strings[0]);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept-Encoding","identity");
Log.i("-----",connection.getResponseCode()+"");
long length = 0;
long contentLengthLong = connection.getContentLengthLong();
if (connection.getResponseCode() == 200){
is = connection.getInputStream();
baos = new ByteArrayOutputStream();
int len = 0;
byte[] bytes = new byte[1024];
while ((len = is.read(bytes))!=-1){
baos.write(bytes,0,len);
baos.flush();
length+=len;
int progress= (int) ((length/(float)contentLengthLong)*100);
Thread.sleep(30);
publishProgress(progress);
}
}
} catch (Exception e) {
e.printStackTrace();
}
String json = baos.toString();
FoodBean foodBean = new Gson().fromJson(json, FoodBean.class);
List<FoodBean.DataBean> data = foodBean.getData();
return data;
}
@Override
protected void onProgressUpdate(Integer... values) {
dialog.setProgress(values[0]);
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(List<FoodBean.DataBean> dataBeans) {
super.onPostExecute(dataBeans);
if (dialog.getMax()==100){
list.addAll(dataBeans);
Log.i("-----", list.toString());
dialog.dismiss();
NotificationManager manager = (NotificationManager) context.getSystemService(Service.NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(context);
builder.setSmallIcon(R.mipmap.ic_launcher);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.layout_message);
remoteViews.setTextViewText(R.id.text_message,"下载完成");
remoteViews.setImageViewResource(R.id.image_message,R.mipmap.ic_launcher);
builder.setCustomContentView(remoteViews);
Intent intent = new Intent(context, DataActivity.class);
PendingIntent activity = PendingIntent.getActivity(context, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setAutoCancel(true);
builder.setDefaults(Notification.DEFAULT_ALL);
builder.setPriority(Notification.PRIORITY_MAX);
builder.setContentIntent(activity);
manager.notify(1,builder.build());
}
}
}
适配器
public class MyAdapter extends BaseAdapter {
private Context context;
private List<FoodBean.DataBean> list;
private LayoutInflater layoutInflater;
public static boolean isButton;
public MyAdapter(Context context, List<FoodBean.DataBean> list) {
this.context = context;
this.list = list;
layoutInflater = LayoutInflater.from(context);
}
@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;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null){
holder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.layout_item,null);
holder.image_item = convertView.findViewById(R.id.image_item);
holder.text_item = convertView.findViewById(R.id.text_item);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
if (isButton){
holder.text_item.setTextColor(Color.parseColor("#ffffff"));
}else {
holder.text_item.setTextColor(Color.parseColor("#000000"));
}
holder.text_item.setText(list.get(position).getTitle());
RequestOptions options = new RequestOptions();
options.circleCrop();
Glide.with(context).load(list.get(position).getPic()).apply(options).into(holder.image_item);
holder.text_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, list.get(position).getTitle()+"", Toast.LENGTH_SHORT).show();
}
});
holder.image_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
View inflate = LayoutInflater.from(context).inflate(R.layout.layout_dialog, null);
ImageView imageView = inflate.findViewById(R.id.image_dialog);
Glide.with(context).load(list.get(position).getPic()).into(imageView);
builder.setView(inflate);
builder.show();
}
});
return convertView;
}
class ViewHolder{
private ImageView image_item;
private TextView text_item;
}
}