当前位置: 首页 > news >正文

番禺微网站建设免费网站安全软件大全

番禺微网站建设,免费网站安全软件大全,网站设计排行榜,做网站推广送什么问题简介 在学习开发android过程中,遇到了一个似乎很普遍的问题。当我们在初始化通过adapter将Listview和对应的Arraylist 数据data绑定时,在后面的data更新后,理论上使用adapter.notifyDataSetChanged()方法就可以让adapter自动更新Arrayli…

问题简介

在学习开发android过程中,遇到了一个似乎很普遍的问题。当我们在初始化通过adapter将Listview和对应的Arraylist 数据data绑定时,在后面的data更新后,理论上使用adapter.notifyDataSetChanged()方法就可以让adapter自动更新Arraylist列表,但是实际上我们在对data更新之后,并不能完成对视图中ListView的更新,问bing问了一通也没问出啥解决方法,最后还是查了半天才明白咋回事。。。

结论

解决方法① 可能是最有效的解决方法
将更新后的数据data和视图ListView与适配器adapter重新绑定
即调用绑定时的方法:

data=new_data;//有数据更新
adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,data);
listView.setAdapter(adapter);

解决方法②
对于Arraylist类型的数据data,只在原对象上修改,不能重新赋值,因为重新赋值实质上改变了data所指向的对象,导致adapter的绑定出现问题,这可能也是notifyDataSetChanged()一个使用条件。

data.add("123");//数据更新
//不能data=new_data;
adapter.notifyDataSetChanged();

下面可以不用看啦

代码分析

package com.example.test.ui.slideshow;import static java.lang.System.out;import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;import com.example.test.R;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;public class SlideshowFragment extends Fragment implements View.OnClickListener {//private Integer[] data={1,2,3,5,65,6,7,4,4,6,44,33,9,6,6,49491,85,5,6,2,25,51,25,20,2};private String[] ori_data={"test_keyword1","test_keyword2","test_keyword3","test_keyword4","test_keyword1","test_keyword2","test_keyword3","test_keyword4","test_keyword1","test_keyword2","test_keyword3","test_keyword4","test_keyword1","test_keyword2","test_keyword3","test_keyword4"};private ArrayList<String> data = new ArrayList<>(Arrays.asList(ori_data));private ArrayAdapter<String> adapter=null;private ListView listView;public View onCreateView(@NonNull LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {super.onCreate(savedInstanceState);View view =inflater.inflate(R.layout.fragment_email,container,false);listView=(ListView) view.findViewById(R.id.list_email);adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,data);listView.setAdapter(adapter);//单击每个item进行编辑listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {edit_item(position,adapter);}});listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {del_item(position,adapter);return true; // 返回true表示已经处理了长按事件,不会触发单击事件}});view.findViewById(R.id.btn_add).setOnClickListener(this);view.findViewById(R.id.btn_sync).setOnClickListener(this);view.findViewById(R.id.btn_save).setOnClickListener(this);view.findViewById(R.id.btn_submit).setOnClickListener(this);return view;}@Overridepublic void onClick(View v) {if(v.getId()==R.id.btn_add){edit_item(data.size(), adapter);}else if(v.getId()==R.id.btn_sync){//从服务器将数据同步到客户端data=load();adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,data);listView.setAdapter(adapter);Toast.makeText(getActivity(),"已成功加载",Toast.LENGTH_SHORT).show();}else if(v.getId()==R.id.btn_save){save();Toast.makeText(getActivity(),"已成功保存",Toast.LENGTH_SHORT).show();}else if(v.getId()==R.id.btn_submit){}}private void save(){FileOutputStream out=null;BufferedWriter writer=null;try{out =getActivity().openFileOutput("test_datasave.txt", Context.MODE_PRIVATE);writer=new BufferedWriter(new OutputStreamWriter(out));for (String str : data) {writer.write(str);writer.write('\n');}} catch (IOException e) {e.printStackTrace();}finally {try{if(writer!=null){writer.close();}} catch (IOException e) {e.printStackTrace();}}}private ArrayList<String> load(){ArrayList<String> data=new ArrayList<>();FileInputStream in =null;BufferedReader reader=null;try{in=getActivity().openFileInput("test_datasave.txt");reader=new BufferedReader(new InputStreamReader(in));String line="";while((line=reader.readLine())!=null){data.add(line.toString());}} catch (FileNotFoundException e) {e.printStackTrace();Toast.makeText(getActivity(),"未找到文件",Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();}finally {if(reader!=null){try{reader.close();}catch(IOException e){e.printStackTrace();}}}return data;}//用于弹出dialog 并修改其中的某一项private void edit_item(int postition,ArrayAdapter<String> adapter){AlertDialog.Builder dialog=new AlertDialog.Builder(getActivity());dialog.setTitle("编辑");EditText editText=new EditText(getActivity());editText.setHint("请键入新的关键词");dialog.setView(editText);dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {final String inputText=editText.getText().toString();if(data.size()==postition){data.add(inputText);}else data.set(postition,inputText);adapter.notifyDataSetChanged();}});dialog.show();}//用于弹出一个dialog,用于确认删除其中的某一项private void del_item(int postition,ArrayAdapter<String> adapter){AlertDialog.Builder dialog=new AlertDialog.Builder(getActivity());dialog.setTitle("删除");dialog.setMessage("确认删除这一项?");dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {data.remove(postition);adapter.notifyDataSetChanged();}});dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}
}
http://www.ritt.cn/news/17162.html

相关文章:

  • 做赌博网站代理湘潭网站设计
  • 网站建设与开发试卷微信广告推广如何收费
  • 惠州企业网站建设选哪家国外域名注册
  • 邢台公司做网站关键词排名优化易下拉软件
  • 龙岗外贸网站建设公司价格独立网站怎么做
  • 把国外的网站翻译过来做自媒体优化大师电脑版官方免费下载
  • 郑州做网站助企廊坊优化技巧
  • 烟台网站建设推广2022最新永久地域网名
  • 做视频比较好的理财网站有哪些百度服务中心人工客服电话
  • 怀来县建设局网站自媒体代运营
  • 湛江网站制作费用seo网站推广专员
  • 做电力公司网站百度网站优化工具
  • 企业管理网站百度站长工具是什么意思
  • 介绍一学一做视频网站吗整站快速排名
  • seo流量查询百度seo价格查询
  • 网络规划设计师报考陕西百度代做seo排名
  • 东莞科技网站建设淘宝店铺转让价格表
  • 仿制网站侵权行为网络seo公司
  • 公司网站建设合同 华律网长春seo招聘
  • 营销型企业网站建设 广义的空间刚刚突发1惊天大事
  • 中国建设人才服务信息网证书查询seo优化诊断工具
  • 建网站来做什么南宁网站seo大概多少钱
  • 浏览器做单页网站项目百度搜索指数排行榜
  • 学网站开发和游戏开发那个seo一键优化
  • ppt设计报价seo服务指什么意思
  • 广州花都区网站建设潍坊今日头条新闻
  • 做视频网站需要多大的带宽腾讯云服务器
  • 提供深圳网站制作公司线上宣传方案
  • java做网站主要技术凌哥seo
  • 做网站怎么做推广百度识图入口