Android ListView重复加载的问题

我建立一个 ListViewView,并重写了自己的 adapter(继承BaseAdapter),数据源是一个ArrayList.
,ArrayList里的数据是 1,2,3。当我初始化 ListView时,显示的是 1,2,3。
以上看起来非常正常,但当我按 后退键,然后重新 进入 ListView的时候,诡异的事情就发生了。。
当我第二次进入 ListView的时候,屏幕上显示的 数据 成了 1,2,3, 1,2,3 .
然后我按下 后退键,再进入 ListView, 屏幕上的 数据 成了 1,2,3, 1,2,3 ,1,2,3

如此循环往复。。总之,每次进入ListView,都得重新读取ArrayList的数据。请问是什么原因导致的呢?
以下是adapter源码
public class chatListAdapter extends BaseAdapter{

private Context context;                        //运行上下文   
private List<Map<String, Object>> listItems;    //联系人信息集合   
private LayoutInflater listContainer;           //视图容器   
private boolean[] hasChecked;                   //记录联系人选中状态   
public final class ListItemView{                //自定义控件集合     


        public TextView RemoteAudio;
        public TextView LocalAudio;
        public TextView RemoteId;     
        public TextView LocalId;
        public TextView MessageType;

        public ImageView RemoteImage;
        public ImageView LocalImage;
        public TextView RemoteSay;
        public TextView LocalSay;

 }     
public chatListAdapter(Context context, List<Map<String, Object>> listItems) {   
    Log.v("construtor", "constructor11");
    this.context = context;            
    listContainer = LayoutInflater.from(context);   //创建视图容器并设置上下文   
    this.listItems = listItems;   
    hasChecked = new boolean[getCount()];   
}   



@Override
public int getCount() {
    // TODO Auto-generated method stub
    return listItems.size();


}

@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {


    // TODO Auto-generated method stub
    Log.v("getview","getview11");
    final int selectID = position;
    ListItemView  listItemView = null;  
     listItemView = new ListItemView();  
    if (convertView == null) {   

        //获取list_item布局文件的视图   
        convertView = listContainer.inflate(R.layout.chat_list_item, null);   
        //获取控件对象   
        listItemView.RemoteAudio = (TextView)convertView.findViewById(R.id.RemoteAudio); 
        listItemView.LocalAudio = (TextView)convertView.findViewById(R.id.LocalAudio);   
        listItemView.RemoteId = (TextView)convertView.findViewById(R.id.RemoteId); 
        listItemView.LocalId = (TextView)convertView.findViewById(R.id.LocalId);
        listItemView.MessageType= (TextView)convertView.findViewById(R.id.MessageType);   
        listItemView.RemoteImage = (ImageView)convertView.findViewById(R.id.RemoteImage);
        listItemView.LocalImage=(ImageView)convertView.findViewById(R.id.RemoteImage);
        listItemView.RemoteSay=(TextView)convertView.findViewById(R.id.RemoteSay);
        listItemView.LocalSay=(TextView)convertView.findViewById(R.id.LocalSay);
        //设置控件集到convertView   
        convertView.setTag(listItemView);  
    }else{listItemView=(ListItemView)convertView.getTag();}

        //set rma,lca,mst,rid,lid into invisible
        //put data from list into view
        String strPosition=""+position;

        int RR=0;
        RR++;
        Log.v("11aa21","RR"+RR);

        listItemView.RemoteId.setText((String)listItems.get(position).get("RemoteId"));

// String idd=Regist.generateId();
// listItemView.RemoteId.setText(" "+idd+" ");
Log.v("11aa21","PositionI"+strPosition);
Log.v("RemoteID","Remote+"+(String)listItems.get(position).get("RemoteId"));

        listItemView.LocalId.setText((String) listItems.get(position).get("LocalId"));
        Log.v("11aa21","PositionI"+strPosition);
        Log.v("RemoteID","LocalID+"+(String)listItems.get(position).get("LocalId"));


        ////
        listItemView.RemoteAudio.setText((String)listItems.get(position).get("RemoteAudio"));
        listItemView.LocalAudio.setText((String)listItems.get(position).get("LocalAudio"));
        ////
        listItemView.MessageType.setText((String)listItems.get(position).get("MessageType"));
        ///
        listItemView.RemoteImage.setBackgroundResource(R.drawable.ic_launcher);
        listItemView.LocalImage.setBackgroundResource(R.drawable.ic_launcher);
        ///
        listItemView.RemoteSay.setText((String)listItems.get(position).get("RemoteSay"));
        listItemView.LocalSay.setText((String)listItems.get(position).get("LocalSay"));

// String idd=Regist.generateId();
// listItemView.LocalSay.setText(idd);
// listItemView.RemoteSay.setText("rms"+position);

        Log.i("tttt","ttttt"+listItemView.LocalSay.getText().toString());
        //decide wether Ls,LI,RS,RI invisible
        //if msgtype=??,then set..invisible,set XX onclick method=??
        String MsgType=listItemView.MessageType.getText().toString();
        Log.i("msgt",MsgType);

        if (MsgType.equals("9d")){
            Log.v("MsgType", "Text");
        listItemView.LocalSay.setVisibility(View.INVISIBLE);
        listItemView.LocalImage.setVisibility(View.INVISIBLE);
        listItemView.RemoteSay.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Log.v("1ab",((TextView) v).getText().toString());
                Toast.makeText(null, "111",Toast.LENGTH_LONG).show();
            }
        });
        }

    return convertView;
}

}

6个回答

看你数据源的ArrayList,是不是静态变量,而且每次初始化的时候都没有clear。

估计是你的7数据源里面数据重复了,打个断点,看看数据源里有多少数据

看你创建数据源的代码吗,可能重复创建了,但是创建前又没有清空之前的数据

谢谢各位的回答,根据 danielibiti兄的答案,我找到了原因。
ArrayList是static,而我加载之前又没有clear,所以导致放进内存的map堆积在一起。。
加了clear后,问题解决了。。非常感谢各位的指点 :)

谢谢各位的回答,大家的答案都非常接近真相。我也不知道该采纳谁,而dan先生提到static,我认为对于我这种菜鸟而言比较容易理解。。。so。就采纳了。。。还是非常感谢大家,为这个问题,我熬两晚通宵了

static,,看了之后,我觉得也好理解诶

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android listview反复调用getview()

哪位大神帮忙看看,只要一滑动listview就会调用调用getView,我的listview和父view都是fill_parent啊 求帮忙! <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:id="@+id/shop_cat_relativeLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/grey" android:orientation="vertical" > <TextView android:id="@+id/total_textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="15dp" android:text="共 件商品" android:textColor="@color/black" android:textSize="20dip" /> <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:id="@+id/shop_cat_listView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/white" android:dividerHeight="1dp" android:fadingEdge="none" android:fastScrollEnabled="false" android:footerDividersEnabled="false" android:headerDividersEnabled="false" android:smoothScrollbar="true" android:layout_marginBottom="50dp" android:cacheColorHint="#00000000" android:listSelector="#00000000" /> </LinearLayout> <RelativeLayout android:id="@+id/shop_cat_bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/darkgrey" android:orientation="horizontal" > <TextView android:id="@+id/shop_cat_totalprice" android:layout_width="200dp" android:layout_height="fill_parent" android:layout_margin="15dp" android:text="合计:¥0.00" android:textColor="@color/white" android:textSize="15dp" /> <TextView android:id="@+id/go_pay" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/red" android:gravity="center" android:text="去结算" android:textColor="@color/white" android:textSize="15dp" /> </LinearLayout> </RelativeLayout> </RelativeLayout>

android对于listview上拉加载,如何不让其出现重复的条目

项目中出现,上啦加载,会出现重复的条目,下拉刷新不会出现。请问路过大神 这是哪里出现了异常。求指导方向。

listView中嵌套WebView,点击后切换tab,webView数据重复加载问题

ListView的item是一个webView,每次只要一点击webView,我切换到别的界面然后再返回当前界面,webView就会重复的加载数据!webView自己就刷新了,打log是webview是被销毁了,自己又重新new了一个 新的webView,所以重新加载了,怎样能让webVIew不被重新加载

listview上下滑动ImageLoader加载图片闪烁重复

listview上下滑动ImageLoader加载图片闪烁重复

fragmentactivity中了用了办法来解决每次点击后重复加载ui,但是没效,求大神指教

package com.doone.changeverday.ui.fragmrnt; import java.util.ArrayList; import java.util.List; import com.doone.changeverday.R; import com.doone.changeverday_bean.ShopBean; import com.doone.changevryday.adpter.ShopAdpter; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListView; public class FragmentShoping extends Fragment { private View view; private View rooview;//用來判斷是否重複加載ui private ListView mListView; private List<ShopBean> mdata = new ArrayList<ShopBean>(); @Override @Nullable public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // TODO Auto-generated method stub if (rooview==null) { rooview = inflater.inflate(R.layout.fragment_shop, null); mListView = (ListView) rooview.findViewById(R.id.shop_list); } ViewGroup prent=(ViewGroup)rooview.getParent(); if (prent!=null) { prent.removeView(rooview); } return rooview; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); addData(); mListView.setAdapter(new ShopAdpter(mdata, getActivity())); } private void addData() { for (int i = 0; i < 3; i++) { ShopBean bean = new ShopBean(); bean.setStation("武侯區社區服務站"); bean.setStart("★★★★★"); bean.setMap("青羊區東大街16號"); mdata.add(bean); } } @Override public void onDestroyView() { super.onDestroyView(); ((ViewGroup)rooview.getParent()).removeView(rooview); } } ``` ```

关于Android使用Glide加载图片的问题?

我在做RecyclerView列表滑动时,需要展示大量图片,我设置了监听在滑动时不加载图片,停止滑动时加载图片。发现图片会一下子全部加载出来,我想要让图片有序或者随机的加载,而不是全部突然加载,请问有什么好的解决方案?还有就是我设置了Glide的crossfade,第一次加载时会有效果,加载缓存时就没有效果了。

android-gif-drawable 加载太多的gif,有时gif动态图不动

我在项目里面加载使用android-gif-drawable,在一个listview里面,每个item都是一个gif动态图,比如动态表情,而且动态图重复率比较高,所以就做了**复用的机制**,但是发现加载太多,就会出现动态图不播放动画的情况,而且很频繁,求解?

安卓listview更新数据列表如何优化

最近在做一个跟蓝牙有关的应用,其中就有蓝牙扫描连接的一个步骤,蓝牙扫描的时候在listview里面会不断的加载扫描到的数据,实际测试的时候发现周围设备到10多20多个的时候,重复扫描几次listView的加载就会变得卡顿,Adapter里面已经把普遍使用的ViewHolder的使用过了,请教还有什么其他方式优化listView的性能么

当旋转Android屏幕时App自动加载数据

我打开我的应用时数据会自动加载, 我的问题是:当屏幕是垂直的时候应用会从服务器上加载下数据,但当屏幕旋转的时候,它又重新加载数据,在垂直状态又重新加载,旋转也是,一直如此。我应该怎么做才能让它不重新加载数据,希望大家能帮我看看,应该如何处理。 程序代码如下: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.nhabep); new LoadData().execute(); } // Class load data private class LoadData extends AsyncTask<Void, Void, Void> { private ProgressDialog progressDialog; private JSONArray jArray; private String result = null; private InputStream is = null; private StringBuilder sb = null; @Override protected void onPreExecute() { this.progressDialog = ProgressDialog.show(Nhabep.this, "", " Loading..."); } @Override protected void onPostExecute(final Void unused) { this.progressDialog.dismiss(); try { if (flag == false) { Toast.makeText(Nhabep.this, "欢迎使用!!", Toast.LENGTH_SHORT).show(); } else { // listview listview = (ListView) findViewById(R.id.listView1); this.progressDialog.dismiss(); listview.setAdapter(new DataAdapter(Nhabep.this, soban .toArray(new String[soban.size()]), thoigian .toArray(new String[thoigian.size()]))); listview.setOnItemClickListener(new OnItemClickListener() { // listview @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String soban2 = soban.get(position); String cafesua2 = cafesua.get(position); String cafeda2 = cafeda.get(position); String cafeden2 = cafeden.get(position); String duatuoi2 = duatuoi.get(position); String nuocngot2 = nuocngot.get(position); String cavienchien2 = cavienchien.get(position); String goiga2 = goiga.get(position); String bokho2 = bokho.get(position); String bunbo2 = bunbo.get(position); Intent i = new Intent(Nhabep.this, Show.class); i.putExtra("soban", soban2); i.putExtra("cafesua", cafesua2); i.putExtra("cafeda", cafeda2); i.putExtra("cafeden", cafeden2); i.putExtra("duatuoi", duatuoi2); i.putExtra("nuocngot", nuocngot2); i.putExtra("cavienchien", cavienchien2); i.putExtra("goiga", goiga2); i.putExtra("bokho", bokho2); i.putExtra("bunbo", bunbo2); startActivity(i); } }); Toast.makeText(Nhabep.this, "欢迎使用!!", Toast.LENGTH_SHORT).show(); } } catch (Exception e) { Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show(); } } // server @Override protected Void doInBackground(Void... params) { try { ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost( "http://longvansolution.tk/loadthongtin.php"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); BufferedReader reader = new BufferedReader( new InputStreamReader(is, "iso-8859-1"), 80); sb = new StringBuilder(); sb.append(reader.readLine() + "\n"); String line = "0"; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result = sb.toString(); if (result.toString().equalsIgnoreCase("null\n")) { flag = false; soban.clear(); thoigian.clear(); cafesua.clear(); cafeda.clear(); cafeden.clear(); duatuoi.clear(); nuocngot.clear(); cavienchien.clear(); goiga.clear(); bokho.clear(); bunbo.clear(); } else { // tin theo Json jArray = new JSONArray(result); if (jArray != null && jArray.length() > 0) { JSONObject json_data = null; soban.clear(); thoigian.clear(); cafesua.clear(); cafeda.clear(); cafeden.clear(); duatuoi.clear(); nuocngot.clear(); cavienchien.clear(); goiga.clear(); bokho.clear(); bunbo.clear(); for (int i = 0; i < jArray.length(); i++) { json_data = jArray.getJSONObject(i); thoigian1 = json_data.getString("date"); soban1 = json_data.getString("ban"); cafesua1 = json_data.getString("cafesua"); cafeda1 = json_data.getString("cafeda"); cafeden1 = json_data.getString("cafeden"); duatuoi1 = json_data.getString("duatuoi"); nuocngot1 = json_data.getString("nuocngot"); cavienchien1 = json_data.getString("cavienchien"); goiga1 = json_data.getString("goiga"); bokho1 = json_data.getString("bokho"); bunbo1 = json_data.getString("bunbo"); thoigian.add(thoigian1); soban.add(soban1); cafesua.add(cafesua1); cafeden.add(cafeden1); cafeda.add(cafeda1); duatuoi.add(duatuoi1); nuocngot.add(nuocngot1); cavienchien.add(cavienchien1); goiga.add(goiga1); bokho.add(bokho1); bunbo.add(bunbo1); } } flag = true; } } catch (Exception e) { // Log.e("log_tag", "Error in http connection" + e.toString()); Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show(); } return null; } }

android getView中 position=0多次出现的解决办法

适配器中的getview @Override public View getView(int position, View convertView, ViewGroup parent) { View view = View.inflate(context,R.layout.home_item,null); TextView tv = (TextView) view.findViewById(R.id.homeItem_tv_name); ImageView iv = (ImageView) view.findViewById(R.id.homeItem_iv_icon); Log.d("AAAA",""+ids[position]+"--"+names[position] + "+++" + position); tv.setText(names[position]); iv.setImageResource(ids[position]); return view; } 下边是输出信息 ![图片说明](https://img-ask.csdn.net/upload/201512/14/1450100581_747407.png) 这个原因我知道了,就是 当我们固定listview的高度时(fill_parent或直接固定高度),那么listview很容易就能计算出容器内可以显示多少行。但如果我们使用了“wrap_content”,只有在屏幕内控件完全加载后才知道到底能显示多少行数据时,ListView自身便会做一些尝试性计算。在源码中可以发现一些叫做onMeasure的方法,目测是做此用处(源码略显复杂,没读透)。

android程序运行后无法加载UI

程序运行后无法加载UI,出现白屏,并报错如下: 07-18 01:30:20.459: E/WindowManager(674): Starting window AppWindowToken{42322000 token=Token{4241ffd8 ActivityRecord{41eb6d98 u0 com.example.pls/.MainActivity t30}}} timed out 在我将主线程中的如下语句注释后,便可以正常加载UI。 ![图片说明](https://img-ask.csdn.net/upload/201607/18/1468811257_95355.jpg) MyThread类如下(主要是考虑单线程模型,想另开一个线程做任务)。 ``` class MyThread implements Runnable { private byte[] src = new byte[1024]; private byte[] dst = new byte[1024]; public void run() { while (!Thread.currentThread().isInterrupted()) { try { int fd = portOperation.getFd(); //循环前清空 String sResponse = "100003010300000712"; byte[] bResponse = HexString2Bytes(sResponse); portOperation.WriteSerialByte(fd, bResponse); String sCardInfo = "1000030101000512"; byte[] bCardInfo = HexString2Bytes(sCardInfo);//[16, 0, 1, 1, 1, 0, 3, 18] portOperation.WriteSerialByte(portOperation.getFd(),bCardInfo); try { Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } src = portOperation.ReadSerial(fd,1024 ); if ((src != null) && (src.length > 9)) { String debug = bytesToHexString(src); //调试 //转码恢复 dst = recovery(src); //从返回帧中提取卡数 String sTemp = bytesToHexString(dst); int a = Integer.parseInt(String.valueOf(sTemp.charAt(11))); int b = Integer.valueOf(String.valueOf(sTemp.charAt(12)),16); int cardNum = a*16+b; for(int i = 0;i<cardNum;i++){ int j = i*16; String cardID = sTemp.substring(13+j,21+j ); if (!dbFile.exists()) { DisplayToast("请先将数据库拷贝到SD卡根目录下!"); return; } String SQL = String.format("select * from employInfo where cardID = '%s'", cardID); Cursor c = db.rawQuery(SQL, null); //没有读到马丽但读到其他卡时,在此停止(因为数据库中只有马丽),不会执行超时删除 //而若读到马丽时,只会更新马丽时间 if(c.moveToFirst()){ //Cursor默认从下标为-1的地方开始,所以不能马上从Cursor获取信息 String name = c.getString(c.getColumnIndex("name")); //在此处将读取人员姓名保存至“employinfo.txt”文件中(确保不重复) Date date = new Date(localFile.lastModified());//文件最后修改时间 Calendar calendar = Calendar.getInstance(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try{ //保证文件日期为今日 if(!localFile.exists()){ localFile.createNewFile(); }else if(localFile.exists() && date.getDay() != calendar.get(Calendar.DAY_OF_MONTH) ){ localFile.createNewFile(); } BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(localFile,true)); BufferedReader bufferedReader = new BufferedReader(new FileReader(localFile)); if(!hasName(name, bufferedReader)){ bufferedWriter.write(name+"\t"+dateFormat.format(calendar.getTime())+"\n"); bufferedWriter.flush(); } bufferedReader.close(); bufferedWriter.close(); }catch(IOException e){ e.printStackTrace(); Log.e("txt",e.toString()); } c.close(); String photoPath0 = Environment.getExternalStorageDirectory().toString() + "/picSrc/"; String photoPath = String.format("%s%s.bmp",photoPath0,name); //确保list里面放的是不同对象map的堆地址,指向的是不同对象 Map<String, Object> map = new HashMap<String, Object>(); map.put("itemName", name); //注意此处不可将Bitmap对象直接放入hashmap中,而应传入地址 map.put("itemPhoto", photoPath); map.put("addTime",System.currentTimeMillis()); Log.v("map", map.toString()); //根据姓名查看list当中是否存在所有项 boolean exist = false; for(Map<String, Object> tempMap : list){ if(name.equals(tempMap.get("itemName"))){ exist = true; //如果有则更新时间 tempMap.put("addTime", System.currentTimeMillis()); break; } } //如果不存在,则添加到list当中 if(!exist){ list.add(map); } Log.v("removeb2",list.toString()); //遍历list查看有无超时项,有则清空该项 Iterator<Map<String, Object>> it = list.iterator(); while(it.hasNext()){ if((System.currentTimeMillis()-Long.parseLong(it.next().get("addTime").toString()))>60000){ Log.v("removebefore",list.toString()); it.remove(); Log.v("removeafter",list.toString()); } } /*for(int k=0;k<list.size();k++){ if(System.currentTimeMillis()-Long.parseLong(list.get(k).get("addTime").toString())>30000){ long debug1 = System.currentTimeMillis(); long debug2 = Long.parseLong(list.get(k).get("addTime").toString()); Log.v("removebefore",list.toString()); list.remove(k); Log.v("remove",list.remove(k).toString()); Log.v("removeafter",list.toString()); } }*/ /*//删除list中没有但listview中 for(int m = 0;m<lv.getChildCount();m++){ View viewTemp = lv.getChildAt(m); String nameTemp = viewTemp.findViewById(R.id.itemName).toString(); boolean exist1 = false; for(Map<String, Object> tempMap : list){ if(nameTemp.equals(tempMap.get("itemName"))){ exist1 = true; break; } } if(!exist1){ lv.removeView(viewTemp); } }*/ } } //将定时任务中获取的List装入ListView中 Message msg = new Message(); msg.what = 1; handler.sendMessage(msg); }else{ Message msg = new Message(); msg.what = 2; handler.sendMessage(msg); } }catch(UnsupportedEncodingException e){ e.printStackTrace(); } try { Thread.sleep(500); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } } ``` 不知道具体是什么原因,还请各位前辈赐教,谢谢!

继承fragment的类中,初始化控件问题

这是类的代码片段 ``` public class CenterFragment extends Fragment implements OnClickListener{ private ListView lv_order;//订单列表 private List<Map<String, Object>> orderMessage;//订单列表数据源 private SimpleAdapter myAdapter; private TextView title_name, title_ico;//订单头布局 private ImageView iv_dish;//订单内容布局 private RelativeLayout order_title; private LinearLayout order_detail; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.centerfragment, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initView();//初始化控件 initOrder();//数据源 myAdapter = new SimpleAdapter(this.getActivity(), orderMessage, R.layout.oder_item, new String[] { "name", "icon", "price" }, new int[] { R.id.title_name, R.id.iv_dish, R.id.order_price }); lv_order.setAdapter(myAdapter); } /* * 初始化控件 */ private void initView() { lv_order = (ListView) getActivity().findViewById(R.id.lv_order); System.out.println(lv_order); System.out.println("==================="); title_name = (TextView) getActivity().findViewById(R.id.title_name); System.out.println(title_name); title_ico = (TextView) getActivity().findViewById(R.id.title_ico); iv_dish = (ImageView) getActivity().findViewById(R.id.iv_dish); //设置监听 title_name.setOnClickListener(this); title_ico.setOnClickListener(this); iv_dish.setOnClickListener(this); } ``` 这是布局代码 ``` <?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="120dp" android:orientation="vertical" > <RelativeLayout android:id="@+id/order_title" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="2" android:padding="5dp" android:gravity="center"> <TextView android:id="@+id/title_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:textSize="14sp" android:textColor="@color/text_color" android:text="肯打鸡"/> <TextView android:id="@+id/title_ico" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/title_name" android:layout_marginLeft="20dp" android:background="@drawable/paycommon__ic_global_arrow_right"/> <TextView android:id="@+id/order_state" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="10dp" android:textSize="12sp" android:textColor="@color/text_color" android:text="订单正在处理" /> <TextView android:layout_width="match_parent" android:layout_height="2dp" android:layout_alignParentBottom="true" android:layout_alignBottom="@id/title_name" android:background="#22000000"/> </RelativeLayout> <LinearLayout android:id="@+id/order_detail" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="5" android:padding="5dp" android:gravity="center_vertical" android:orientation="horizontal"> <ImageView android:id="@+id/iv_dish" android:layout_width="60dp" android:layout_height="60dp" android:layout_marginLeft="10dp" android:background="@drawable/takeout_ic_order_empty"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:orientation="vertical"> <TextView android:id="@+id/order_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ff0000" android:text="$9.8"/> <TextView android:id="@+id/order_take_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="10sp" android:textColor="@color/text_color" android:text="09-11 11:36"/> <TextView android:id="@+id/order_synopsis" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="10sp" android:textColor="@color/text_color" android:text="由肯打鸡提供外卖和配送服务"/> </LinearLayout> </LinearLayout> </LinearLayout> ``` lv_order = (ListView) getActivity().findViewById(R.id.lv_order); System.out.println(lv_order); title_name = (TextView) getActivity().findViewById(R.id.title_name); System.out.println(title_name); title_ico = (TextView) getActivity().findViewById(R.id.title_ico); iv_dish = (ImageView) getActivity().findViewById(R.id.iv_dish); lv_order可以初始化,后面的打印为空,设置不了监听 请问这是怎么回事??

如何在当前的activity中保存数据,下次可以在相同的activity中访问?

在一个列表中有一些数据的列表,我想在点击的时候,把它发送到其它的 activity。 使用 intent 发送数据 Intent i = new Intent(MainActivity.this,AppDiscription.class); i.putExtra("NAME", s); i.putExtra("AMT", Appname); i.putExtra("COUNT", cnvert); i.putExtra("SELECTEDID", selectedFromList); startActivity(i); on receiving activity: if (extras != null) { Appname = extras.getString("NAME"); total = extras.getString("AMT"); count = extras.getString("COUNT"); selected = extras.getString("SELECTEDID"); } 现在我要把"selected" 保存到这个 activity 的变量中,这样我就可以与新 "selected" 的数据做比较。这个新的数据是当我点击 listview 时,来自下一个 intent 的数据。 那么如何在当前的 activity 中保存数据,下次可以在相同的 activity 中访问?

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

Linux命令学习神器!命令看不懂直接给你解释!

大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务。 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么就直接用 man 命令去查看守冗长的帮助手册。这两个都可以实现我们的目标,但有没有更简便的方式呢? 答案是必须有的!今天给大家推荐一款有趣而实用学习神器 — kmdr,让你解锁 Linux 学习新姿势...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

史上最全的 python 基础知识汇总篇,没有比这再全面的了,建议收藏

网友们有福了,小编终于把基础篇的内容全部涉略了一遍,这是一篇关于基础知识的汇总的文章,请朋友们收下,不用客气,不过文章篇幅肯能会有点长,耐心阅读吧爬虫(七十)多进程multiproces...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

大学一路走来,学习互联网全靠这几个网站,最终拿下了一把offer

大佬原来都是这样炼成的

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

程序员必知的 89 个操作系统核心概念

操作系统(Operating System,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 shell:它是一个程序,可从键盘获取命令并将其提供给操作系统以执行。 在过去,它是类似 Unix 的系统上...

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

阿里面试,问了B+树,这个回答让我通过了

上周我通过阿里一面,岗位是客户端开发工程师。面试过程中面试官问了B+树,回答时面试官一直点头(应该回答得还不错,过了),今天详细讲一讲B+树。

立即提问
相关内容推荐