Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中传递多个数组来填充列表视图?_Android_Arrays_Listview_Baseadapter - Fatal编程技术网

如何在android中传递多个数组来填充列表视图?

如何在android中传递多个数组来填充列表视图?,android,arrays,listview,baseadapter,Android,Arrays,Listview,Baseadapter,我想用图像和图像的上传时间填充ListView。我已经完成了图像,但我不知道如何设置图像上传到ListView的时间。我该怎么做 这就是我现在所拥有的: MainActivity.java ArrayList<String> pathArray; Button pickImage; Uri uri; ListView l; @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea

我想用图像和图像的上传时间填充ListView。我已经完成了图像,但我不知道如何设置图像上传到ListView的时间。我该怎么做

这就是我现在所拥有的:

MainActivity.java

ArrayList<String> pathArray;

Button pickImage;
Uri uri;
ListView l;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    pathArray = new ArrayList<>();

    pickImage = (Button) findViewById(R.id.buttonPick);
    pickImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent pickup = new Intent();
            pickup.setType("image/*");
            pickup.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(pickup, "Select Image"), 5);
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 5) {
        try{
            uri = data.getData();
            pathArray.add(uri.toString());

            l.setAdapter(new MyCustomAdapter(this, pathArray));
        }
        catch (NullPointerException ex){
            ex.printStackTrace();
        }
    }
}
ArrayList路径数组;
按钮图像;
Uri;
列表视图l;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pathArray=newArrayList();
pickImage=(按钮)findViewById(R.id.buttonPick);
pickImage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意图拾取=新意图();
pickup.setType(“image/*”);
拾取.setAction(意图.ACTION\u获取内容);
startActivityForResult(Intent.createChooser(拾取,“选择图像”),5);
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==5){
试一试{
uri=data.getData();
add(uri.toString());
l、 setAdapter(新的MyCustomAdapter(这个,pathArray));
}
捕获(NullPointerException ex){
例如printStackTrace();
}
}
}
MyCustomAdapter.java

public class MyCustomAdapter extends BaseAdapter {

    ArrayList<String> result;
    Context context;
    private static LayoutInflater inflater = null;

    public MyCustomAdapter(MainActivity mainActivity, ArrayList<String> imageNameList) {
        context = mainActivity;
        result = imageNameList;

        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return result.size();
    }

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

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

    public class Holder{
        private TextView textViewTime;
        ImageView listViewImage;
    }

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

        Holder holder;

        if (convertView == null) {

            holder = new Holder();
            convertView = inflater.inflate(R.layout.listview_layout, null);

            holder.textViewTime = (TextView) convertView.findViewById(R.id.textTime);
            holder.listViewImage = (ImageView) convertView.findViewById(R.id.listViewImage);

            convertView.setTag(holder);
        }

        else{
            holder = (Holder) convertView.getTag();
        }

        String path=result.get(position);

        /* Time today = new Time(Time.getCurrentTimezone());
        today.setToNow();
        int day = today.monthDay;
        int month = today.month + 1;
        int year = today.year; */

        holder.listViewImage.setImageURI(Uri.parse(path));

        return convertView;
    }
}
公共类MyCustomAdapter扩展了BaseAdapter{
阵列列表结果;
语境;
专用静态充气机=空;
公共MyCustomAdapter(MainActivity MainActivity,ArrayList imageNameList){
上下文=主要活动;
结果=图像名称列表;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
}
@凌驾
public int getCount(){
返回result.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共类持有者{
私有文本视图文本视图时间;
图像视图列表视图图像;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
持有人;
if(convertView==null){
保持架=新保持架();
convertView=充气机。充气(R.layout.listview\U布局,空);
holder.textViewTime=(TextView)convertView.findViewById(R.id.textTime);
holder.listViewImage=(ImageView)convertView.findViewById(R.id.listViewImage);
convertView.setTag(支架);
}
否则{
holder=(holder)convertView.getTag();
}
字符串路径=result.get(位置);
/*今日时间=新时间(Time.getCurrentTimezone());
今天;
int day=今天。月日;
整月=今天。月+1;
int year=今天。年*/
holder.listViewImage.setImageURI(Uri.parse(path));
返回视图;
}
}
请帮帮我


thanx.

您应该将图像路径和上载时间包装为对象,如ImageRow,并将
pathArray
更改为
List
,成功上载图像后,将其替换为
onActivityResult()


然后更改您的
MyCustomAdapter
类以接收
List
作为第二个参数,并从中获取数据以设置imageview和time textview。

您应该将图像路径和上载时间包装为对象,如ImageRow,并将
pathArray
更改为
List
,当您成功上载图像时,将此替换为onActivityResult()中的

然后更改
MyCustomAdapter
类以接收
List
作为第二个参数,并从中获取数据以设置imageview和time textview

uri = data.getData();
pathArray.add(uri.toString());
uri = data.getData();
pathArray.add(new ImageRow(uri.toString(),System.currentTimeMills()));