1. 程式人生 > >Adapter條目點選,跳轉到新的Activity,獲取到值之後回顯到adapter 條目中的某個控制元件中去

Adapter條目點選,跳轉到新的Activity,獲取到值之後回顯到adapter 條目中的某個控制元件中去

//DEMO 示例   (可以直接複製貼上驗證功能--如有bug或者其他問題,歡迎留言),需要butterknife, recyclerview依賴包
package com.ontime.change;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import 
android.view.View; import android.widget.TextView; //顯示條目的Activity public class MainActivity extends AppCompatActivity { private MyAdapter adapter; private RecyclerView rv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main
); rv = (RecyclerView) findViewById(R.id.rv); rv.setLayoutManager(new LinearLayoutManager(this)); adapter = new MyAdapter(this); rv.setAdapter(adapter); adapter.notifyDataSetChanged(); adapter.setItemClickListener(new MyAdapter.MyItemClickListener() { @Override
public void onItemClick(View view, int position) { Intent intent = new Intent(MainActivity.this,TwoActivity.class); intent.putExtra("位置", position); startActivityForResult(intent,200); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Bundle allData = data.getExtras(); int pos = allData.getInt("位置"); String price = allData.getString("新價格"); TextView tv2 = rv.getChildAt(pos).findViewById(R.id.tv2); tv2.setText(price); adapter.notifyDataSetChanged(); } }
//獲取需要值的Activity
package com.ontime.change;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;

public class TwoActivity extends AppCompatActivity{

    @InjectView(R.id.oldPrice)
    TextView oldPrice;
    @InjectView(R.id.newPrice)
    EditText newPrice;

    private SharedPreferences sp;
    private String latest;
    private int position;
    private Intent intent;

    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        ButterKnife.inject(this);

        sp = getSharedPreferences("價格", MODE_PRIVATE);

        intent = getIntent();
        position = intent.getIntExtra("位置", 0);

        oldPrice.setText(sp.getString("價格" + position, "暫未設定價格"));
    }

    @OnClick({R.id.btn_confirm, R.id.btn_skip})
    public void onViewClicked(View view) {

        switch (view.getId()) {
            case R.id.btn_confirm:
                latest = newPrice.getText().toString().trim();
                if (!TextUtils.isEmpty(latest)) {
                    SharedPreferences.Editor editor = sp.edit();
                    editor.putString("價格" + position, latest);
                    editor.commit();
                    Toast.makeText(this, "新價格" + latest + "更新成功", Toast.LENGTH_SHORT).show();
                    intent.putExtra("新價格", latest);
                    intent.putExtra("位置", position);
                    setResult(RESULT_OK, intent);
                    finish();
                } else {
                    Toast.makeText(this, "價格不可為空", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.btn_skip:
                intent.putExtra("舊價格", sp.getString("價格", "暫無標籤繫結"));
                intent.putExtra("位置", position);
                setResult(RESULT_OK, intent);
                finish();
                break;
            default:
                break;
        }
    }
}

//介面卡Adapter
package com.ontime.change;

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import static android.content.Context.MODE_PRIVATE;


public class MyAdapter extends RecyclerView.Adapter {

    public MyAdapter(Context context) {
        this.context = context;
    }
    private Context context;
    private MyItemClickListener mItemClickListener;
    private SharedPreferences sp;

    @Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
        ViewHolder viewHolder = new ViewHolder(view,mItemClickListener);
        return viewHolder;
    }

    //繫結資料
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        final ViewHolder viewHolder = (ViewHolder) holder;
        viewHolder.tv1.setText(position + "");
        sp = context.getSharedPreferences("價格", MODE_PRIVATE);
        viewHolder.tv2.setText(sp.getString("價格" + position, "還沒有設定價格喲"));
    }

    @Override
public int getItemCount() {
        return 3;
    }

    static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        private TextView tv1;
        private TextView tv2;

        private MyItemClickListener mListener;

        ViewHolder(View view, MyItemClickListener myItemClickListener) {
            super(view);
            tv1 = view.findViewById(R.id.tv1);
            tv2 = view.findViewById(R.id.tv2);
            this.mListener = myItemClickListener;
            itemView.setOnClickListener(this);
        }

        @Override
public void onClick(View view) {
            if (mListener != null) {
                mListener.onItemClick(view, getLayoutPosition());
            }
        }
    }

    public interface MyItemClickListener {
        void onItemClick(View view, int position);
    }

    public void setItemClickListener(MyItemClickListener myItemClickListener) {
        this.mItemClickListener = myItemClickListener;
    }
}

 //activity_main 佈局檔案
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

    <android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rv"
/>
</RelativeLayout>

//activity_two 佈局檔案
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

    <TextView
android:id="@+id/tv_shake"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:text="請進行商品價格繫結繫結"
android:textColor="@android:color/black"
android:textSize="20sp"
/>

    <RelativeLayout
android:id="@+id/rl_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_shake"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
>

        <TextView
android:id="@+id/tv_sentence"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="當前價格:"
android:textColor="@android:color/black"
android:textSize="15sp"
/>

        <TextView
android:id="@+id/oldPrice"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/tv_sentence"
android:gravity="center_vertical"
android:textSize="15sp"
/>
    </RelativeLayout>

    <RelativeLayout
android:id="@+id/rl_container_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/rl_container"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
>

        <TextView
android:id="@+id/tv_sentence_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center_vertical"
android:text="最新價格:"
android:textColor="@android:color/black"
android:textSize="15sp"
/>

        <EditText
android:id="@+id/newPrice"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/tv_sentence_1"
android:gravity="center_vertical"
android:textSize="15sp"
/>
    </RelativeLayout>


    <Button
android:id="@+id/btn_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/rl_container_1"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="繫結 / 更換繫結"
/>

    <Button
android:id="@+id/btn_skip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_confirm"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="暫時不更改繫結"
/>
</RelativeLayout>

//條目list 佈局檔案
<?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="wrap_content"
android:orientation="vertical"
android:layout_marginTop="20dp"
>

    <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>

        <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="商品:   "
android:textSize="25dp"
/>

        <TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
/>
    </LinearLayout>

    <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>

        <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="價格:   "
android:textSize="25dp"
/>

        <TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
/>
    </LinearLayout>

</LinearLayout>