如何将ListView与imageView和textView传递给其他活动

时间:2017-08-02 20:41:21

标签: java android listview mobile

我有2个不同的活动,但他们都有 listview 。就数据而言,我的第一项活动是空的。它只有一个按钮,可以传递给我的第二个活动。

每行在我的第二个活动中包含一个imageView,textView和checkBox。 当我在第二个活动中的任何一行激活复选框时,我想将数据发送到我的第一个活动。例如,我单击一个复选框来选择一行,当我回到第一个活动时,我应该看到这一行(使用ImageView,TextView)。实际上,另外,当复选框未激活时,我想删除第一个活动中的数据。但是,如果你帮我解决第一个问题,我想我可以找到这个解决方案。

我的第一次活动(我应该看到这里的行)

   ImageView image = (ImageView) findViewById(R.id.image);
    Bundle bundleObject = getIntent().getExtras();
    if (bundleObject != null) {
        String resultText = bundleObject.getString("RESULT_TEXT");
        dbHelper.insertNewTask(resultText);
        byte[] byteArray = bundleObject.getByteArray("picture");
        Bitmap b = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
        image.setImageBitmap(b); //ERROR IS HERE!!!!! IT ISN'T WORKING

我的第二次活动

    byte[] byteArray;
    Bitmap bmp;
    int[] images = {R.drawable.book, R.drawable.watchingtv};
    bmp = BitmapFactory.decodeResource(getResources(), R.drawable.book);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byteArray  = stream.toByteArray();
class MyAdapter extends ArrayAdapter<String> implements View.OnClickListener {
    Context context;
    int[] images;
    String[] mytitles;

    MyAdapter(Context c, String[] titles, int images[]) {
        super(c, R.layout.row_2, R.id.newTaskTitle, titles);
        this.context = c;
        this.images = images;
        this.mytitles = titles;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.row_2, parent, false);
        ImageView myImage = (ImageView) row.findViewById(R.id.newImage);

        final TextView myTitle = (TextView) row.findViewById(R.id.newTaskTitle);
        myImage.setImageResource(images[position]);
        myTitle.setText(mytitles[position]);
        checkBox = (CheckBox) row.findViewById(R.id.checkBox);
        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                Boolean durum = checkBox.isChecked();
                if(durum=true){
                    Intent intent = new Intent (dinlenmeEkrani_newOptions.this, dinlenmeEkrani.class);
                    intent.putExtra("picture", byteArray);
                    intent.putExtra("RESULT_TEXT", myTitle.getText().toString());
                    startActivity(intent);

                }
                else{

                }

            }

        });
        return row;
    }

第二项活动可能有错误。当我尝试达成解决方案时,我可能会犯一些错误。

我想说这些:我在传递textview方面取得了成功。所以,当我删除一些与Image相关的代码时(特别是在我的第一个活动中),我看到传递来自String.xml的textView。而且,我刚刚尝试过R.Drawable.book,因为如果它有效,我认为我可以添加其他绘图。

(如果你想知道dbHelper,就在这里)

public class Database extends SQLiteOpenHelper
public static final String DB_TABLE = "Task";
public static final String DB_COLUMN =  "TaskName";
public void insertNewTask (String task){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(DB_COLUMN,task);
        db.insertWithOnConflict(DB_TABLE,null,values, SQLiteDatabase.CONFLICT_REPLACE);
        db.close();
    }

1 个答案:

答案 0 :(得分:1)

无法在活动之间共享任何视图对象,因为它们与Activity和Activities链接完全独立。您需要创建一个逻辑来识别和处理状态,只是在活动之间传递小块数据,就像您已经在使用意图一样。