map集合明明是有数据源的,为什么还是报空指针异常?

silence角落 silence角落 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
package com.linhai.backup;

import android.content.Context;
import android.content.Intent;
import android.os.Environment;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.SearchView;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.Inflater;

public class ExploreActivity extends ActionBarActivity {
private static Context context;
private static final String TGA ="ExploreActivity" ;
private static final String SDPATH= Environment.getExternalStorageDirectory().getAbsolutePath();
private String currentPath="/";
private static final String storageState="MEDIA_MOUNTED";
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_explore);
ActionBar bar=getSupportActionBar();
bar.setDisplayHomeAsUpEnabled(true);
bar.setDisplayShowTitleEnabled(false);
lv= (ListView) findViewById(R.id.lv);
lv.setAdapter(new myAdapter(this,getData()));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_explore, menu);
SearchView searchView= (SearchView) menu.findItem(R.id.action_search).getActionView();
if(searchView==null){
Log.e("SearchView","Fail to get Search View.");
return true;
}
searchView.setIconifiedByDefault(true);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
switch (id){
case R.id.action_settings:
return true;
case android.R.id.home:
Intent intent=new Intent(ExploreActivity.this,MainActivity.class);
startActivity(intent);
this.finish();
Log.i(TGA, ":back to main");
return true;
case R.id.action_search:
Toast.makeText(this,"isExpanded?",Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private class ViewHolder{
ImageView img;
TextView tv;
}
private List<Map<String,Object>> getData() {
List<Map<String,Object>> list =new ArrayList<Map<String,Object>>();
Map<String,Object> map=new HashMap<String,Object>();
File file=new File(currentPath);
File[] files=file.listFiles();
if(currentPath=="/"){
map.put("icon", R.drawable.files);
map.put("filename", "内部存储");
list.add(map);
if (Environment.getExternalStorageState().equals(storageState)){
map.put("icon", R.drawable.files);
map.put("filename", "SD卡");
list.add(map);
Log.i(TGA, "map:"+map);
}
else{
Toast.makeText(this,"sd未挂载",Toast.LENGTH_SHORT).show();
}
Log.i(TGA, "map:"+map);

}else{
map.put("icon",R.drawable.back);
map.put("filename", "返回上一级");
list.add(map);
if (files !=null) {
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
map.put("icon", R.drawable.files);
map.put("filename", files[i].getName());
list.add(map);
} else {
map.put("icon", R.drawable.file);
map.put("filename", files[i].getName());
list.add(map);
}
}
}
}
return list;
}
private class myAdapter extends BaseAdapter{

List<Map<String,Object>> mData;
LayoutInflater mInflater;
public myAdapter(Context context,List<Map<String, Object>> mData){
this.mInflater= LayoutInflater.from(context);
this.mData=mData;
}
@Override
public int getCount() {
return mData.size();
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
Map<String,Object> map=mData.get(position);
Log.i(TGA, "map:"+map);
ViewHolder holder=null;
if(convertView==null){
holder=new ViewHolder();
convertView=mInflater.inflate(R.layout.listview_content,null);
holder.img=(ImageView) findViewById(R.id.img);
holder.tv=(TextView) findViewById(R.id.title);
convertView.setTag(holder);
}
else{
holder= (ViewHolder) convertView.getTag();
}
Log.i(TGA, "icon:" + map.get("icon"));
holder.img.setBackgroundResource((Integer) map.get("icon"));//就是这里出问题啦
holder.tv.setText((CharSequence) map.get("filename"));//就是这里出问题啦

return convertView;
}
}
}
...全文

相关推荐

java 代码中预防空指针异常的处理办法

个人在做项目时,对NullPointerException的几点总结,请网友拍砖!!!多多提意见,

weixin_38592332

利用Java8 Optional如何避免空指针异常详解

Optional可以让你的代码具有可读性,且会避免出现空指针异常。下面这篇文章主要给大家介绍了关于利用Java8 Optional如何避免空指针异常的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。

weixin_38678022

UnityShader 法线贴图(Normal Map)与视差贴图(Parallax Map)

主要研究一下怎样增强法线贴图的效果,法线贴图的进阶版-视差贴图(Parallax Map)。

独立游戏开发指南

java中map集合的用法

java.util 中的集合类包含 Java 中某些最常用的类。 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。 而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。本文将着重介绍核心 Java 发行套件中附带的 Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用 Map。

lx76939412

Java8中利用stream对map集合进行过滤的方法

主要给大家介绍了关于Java8中利用stream对map集合进行过滤的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38680393
评论 2
收藏 已收藏
分享
返回顶部
silence角落
Android 80,489 成员 91,375 内容