Adapter條目點選,跳轉到新的Activity,獲取到值之後回顯到adapter 條目中的某個控制元件中去
阿新 • • 發佈:2019-02-01
//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; importandroid.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() { @Overridepublic 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>