如何解决如何在RecyclerView Android中获取item的具体位置
我使用表格布局在 Recycler View 中显示数据,数据来自 API,我在代码中使用了 EditText 和文本视图。我使用编辑文本,以便用户可以编辑该特定数据并将其发送回服务器。 我的问题是,每次我从编辑文本编辑数据并将其发布 API 时,应用程序都会崩溃。 我认为问题在于在回收者视图中获取 Edittext 的位置 请帮帮我我真的很高兴你的帮助 提前致谢。
这是我的代码
适配器类
public class PostingAdopter extends RecyclerView.Adapter<PostingAdopter.ViewHolder> {
Context context;
List<PostingModel> postingModelList;
public PostingAdopter(Context context,List<PostingModel> postingModelList) {
this.context = context;
this.postingModelList = postingModelList;
}
@NonNull
@Override
public PostingAdopter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.posting_item_ly,parent,false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull PostingAdopter.ViewHolder holder,int position) {
final PostingModel model = postingModelList.get(position);
if (postingModelList != null && postingModelList.size() > 0) {
holder.serialNo.setText(model.getSerialNo());
holder.party_name.setText(model.getPartyName());
holder.jbAmount.setText(model.getJaama_beanaam_Amount());
holder.Payment_type.setText(model.getPaymentType());
holder.remarks.setText(model.getRemarks());
holder.bill_no.setText(model.getBillno());
}
}
@Override
public int getItemCount() {
return postingModelList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView serialNo,bill_no,party_name,Payment_type,remarks;
EditText jbAmount;
public ViewHolder(@NonNull View itemView) {
super(itemView);
serialNo = itemView.findViewById(R.id.serial_id_posting);
bill_no = itemView.findViewById(R.id.bill_no_posting);
party_name = itemView.findViewById(R.id.party_id_posting);
jbAmount = itemView.findViewById(R.id.jb_posting);
Payment_type = itemView.findViewById(R.id.payment_t_id);
remarks = itemView.findViewById(R.id.remark_posting);
}
}
}
这是我的模型类
public class PostingModel {
String SerialNo;
String jaama_beanaam_Amount;
String PartyName;
String Billno;
String PaymentType;
String Remarks;
public String getSerialNo() {
return SerialNo;
}
public void setSerialNo(String serialNo) {
SerialNo = serialNo;
}
public String getJaama_beanaam_Amount() {
return jaama_beanaam_Amount;
}
public void setJaama_beanaam_Amount(String jaama_beanaam_Amount) {
this.jaama_beanaam_Amount = jaama_beanaam_Amount;
}
public String getPartyName() {
return PartyName;
}
public void setPartyName(String partyName) {
PartyName = partyName;
}
public String getBillno() {
return Billno;
}
public void setBillno(String billno) {
Billno = billno;
}
public String getPaymentType() {
return PaymentType;
}
public void setPaymentType(String paymentType) {
PaymentType = paymentType;
}
public String getRemarks() {
return Remarks;
}
public void setRemarks(String remarks) {
Remarks = remarks;
}
public PostingModel() {
}
public PostingModel(String serialNo,String jaama_beanaam_Amount,String partyName,String billno,String paymentType,String remarks) {
SerialNo = serialNo;
this.jaama_beanaam_Amount = jaama_beanaam_Amount;
PartyName = partyName;
Billno = billno;
PaymentType = paymentType;
Remarks = remarks;
}
}
这是我的主课
public class PostingActivity extends AppCompatActivity {
TextView time_ed,deletePosting,savePosting,postPosting;
RecyclerView recyclerView;
ImageView mirror;
EditText ed_code,paymentEditText;
RequestQueue requestQueue;
PostingAdopter adaptor;
String party_name;
String jbAmount;
String Bill_no;
int paymentid;
String paymentType;
String remarks;
JSONArray jsonArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_posting);
paymentEditText = findViewById(R.id.jb_posting);
deletePosting = findViewById(R.id.deletePosting);
savePosting = findViewById(R.id.savePosting);
postPosting = findViewById(R.id.postPosting);
recyclerView = findViewById(R.id.recycler_view_for_posting);
ed_code = findViewById(R.id.ed_code_posting);
mirror = findViewById(R.id.mirror_posting);
mirror.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = ed_code.getText().toString();
jsonData(s);
}
});
savePosting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
int npayment = Integer.parseInt(n);
;
jsonPosting(paymentid,npayment);
}
});
}
private void setRecyclerView(String response,JSONArray jsonArray) {
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adaptor = new PostingAdopter(this,setList(response,jsonArray));
recyclerView.setAdapter(adaptor);
}
private List<PostingModel> setList(String response,JSONArray jsonArray) {
try {
List<PostingModel> postingModelList= new ArrayList<>();
for (int i = 0; i <= jsonArray.length() - 1; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
party_name = jsonObject.getString("party_name");
Bill_no = jsonObject.getString("bill_no");
paymentid = jsonObject.getInt("payment_id");
paymentType = jsonObject.getString("detail");
remarks = jsonObject.getString("user_description");
jbAmount = jsonObject.getString("jaama_beanaam_Amount");
postingModelList.add(new
PostingModel(String.valueOf(i+1),jbAmount,Bill_no,paymentType,remarks));
}
return postingModelList;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
private void jsonData(String Data) {
String URL = getResources().getString(R.string.base_url) +
"/mapi/api/customer/getPostingRecords";
requestQueue = Volley.newRequestQueue(getApplicationContext());
String finalBody = "";
JSONObject jsonBody = new JSONObject();
try {
jsonBody.put("USER_CODE_NO",Data);
finalBody = jsonBody.toString();
} catch (JSONException e) {
e.printStackTrace();
}
final String requestBody = jsonBody.toString();
StringRequest stringRequest = new StringRequest(Request.Method.POST,URL,new
Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
jsonArray = new JSONArray(response);
if (jsonArray.length() == 0) {
Toast.makeText(PostingActivity.this,"No Record Found",Toast.LENGTH_SHORT).show();
return;
}
setRecyclerView(response,jsonArray);
} catch (JSONException e) {
e.printStackTrace();
}
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_LONG).show();
//Log.v("VOLLEY",error.toString());
}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
@Override
public byte[] getBody() throws AuthFailureError {
try {
return requestBody == null ? null : requestBody.getBytes("utf-8");
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s",requestBody,"utf-8");
return null;
}
}
};
requestQueue.add(stringRequest);
}
private void jsonPosting(int paymentid,int jbAmount) {
String URL = getResources().getString(R.string.base_url) +
"/mapi/api/customer/updatePostingRecordSingle";
requestQueue = Volley.newRequestQueue(getApplicationContext());
String finalBody = "";
JSONObject jsonBody = new JSONObject();
try {
jsonBody.put("PaymentID",paymentid);
jsonBody.put("Amount",jbAmount);
finalBody = jsonBody.toString();
} catch (JSONException e) {
e.printStackTrace();
}
final String requestBody = jsonBody.toString();
StringRequest stringRequest = new StringRequest(Request.Method.POST,new
Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(PostingActivity.this,""+response.toString(),Toast.LENGTH_SHORT).show();
}
},"utf-8");
return null;
}
}
};
requestQueue.add(stringRequest);
}
这里是项目的xml(recyclerview中的tablelayout)
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="6">
<TableRow
android:id="@+id/tab_layout_row"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/serial_id_posting"
android:text="100"
android:layout_width="30dp"
android:layout_height="match_parent"
android:layout_column="1"
android:gravity="center"
android:background="@drawable/line"
android:textSize="12sp"
android:textColor="@color/black"
android:textStyle="bold"
/>
<TextView
android:layout_width="45dp"
android:layout_height="match_parent"
android:id="@+id/bill_no_posting"
android:gravity="center"
android:text="BillNo"
android:layout_column="1"
android:lines="2"
android:textSize="12sp"
android:background="@drawable/line"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="110dp"
android:id="@+id/party_id_posting"
android:gravity="center_vertical"
android:paddingHorizontal="3dp"
android:layout_column="1"
android:layout_height="match_parent"
android:text="Party Time"
android:lines="2"
android:background="@drawable/line"
android:autoSizeMaxTextSize="12dp"
android:textSize="12sp"
android:textColor="@color/black"
android:textStyle="bold" />
<EditText
android:id="@+id/jb_posting"
android:text="Payment"
android:lines="1"
android:layout_width="65dp"
android:paddingHorizontal="3dp"
android:layout_column="1"
android:layout_height="match_parent"
android:background="@drawable/line"
android:gravity="center|right"
android:textSize="12sp"
android:textColor="@color/black"
android:textStyle="bold"
/>
<TextView
android:id="@+id/payment_t_id"
android:text="Type"
android:layout_width="71dp"
android:layout_column="1"
android:layout_height="match_parent"
android:background="@drawable/line"
android:gravity="center"
android:textSize="12sp"
android:paddingHorizontal="3dp"
android:lines="1"
android:textColor="@color/black"
android:textStyle="bold"
/>
<TextView
android:id="@+id/remark_posting"
android:text="Remarks"
android:layout_width="90dp"
android:layout_column="1"
android:layout_height="match_parent"
android:background="@drawable/line"
android:gravity="center"
android:textSize="12sp"
android:paddingHorizontal="3dp"
android:lines="1"
android:textColor="@color/black"
android:textStyle="bold"
/>
</TableRow>
活动的 XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/mainpage"
android:orientation="vertical"
android:weightSum="8"
android:layout_weight="10"
tools:context=".ActiveWorker">
<FrameLayout
android:id="@+id/ly_ed"
android:layout_width="match_parent"
android:layout_marginTop="5dp"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="40dp"
android:src="@drawable/homebutton"
android:layout_gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Posting"
android:autoSizeMaxTextSize="14sp"
android:autoSizeMinTextSize="12sp"
android:autoSizeTextType="uniform"
android:textStyle="bold"
android:textColor="@color/red"
android:layout_gravity="center"/>
</FrameLayout>
<LinearLayout
android:layout_below="@id/ly_ed"
android:id="@+id/linear_ly"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="1.5">
<EditText
android:id="@+id/ed_code_posting"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="40dp"
android:textColor="@color/red"
android:layout_weight="1"
android:inputType="number"
android:textSize="20sp"
android:background="@drawable/button_down"
android:gravity="center"
android:hint="Code"
android:textColorHint="@color/light_red" />
<ImageView
android:id="@+id/mirror_posting"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/mirror"
android:padding="5dp"
android:background="@drawable/circle_search"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ly_rece"
android:layout_below="@id/linear_ly"
android:layout_width="match_parent"
android:layout_height="450dp"
android:layout_marginVertical="10dp"
android:layout_marginHorizontal="8dp"
android:background="@drawable/card_view_bg"
android:orientation="vertical">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginTop="20dp"
android:stretchColumns="1,2,3,4,5,6">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:text="Sr.#"
android:layout_width="30dp"
android:layout_height="match_parent"
android:layout_column="1"
android:gravity="center"
android:background="@drawable/line"
android:textSize="12sp"
android:textColor="@color/black"
android:textStyle="bold"
/>
<TextView
android:layout_width="45dp"
android:layout_height="match_parent"
android:gravity="center"
android:text="Bill No"
android:layout_column="1"
android:lines="2"
android:textSize="12sp"
android:background="@drawable/line"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="110dp"
android:gravity="center_vertical"
android:paddingHorizontal="3dp"
android:layout_column="1"
android:layout_height="match_parent"
android:text="Party Time"
android:lines="1"
android:background="@drawable/line"
android:autoSizeMaxTextSize="12dp"
android:textSize="12sp"
android:textColor="@color/black"
android:textStyle="bold" />
<TextView
android:text="Payment"
android:lines="1"
android:layout_width="65dp"
android:paddingHorizontal="3dp"
android:layout_column="1"
android:layout_height="match_parent"
android:background="@drawable/line"
android:gravity="center"
android:textSize="12sp"
android:textColor="@color/black"
android:textStyle="bold"
/>
<TextView
android:text="Type"
android:layout_width="71dp"
android:layout_column="1"
android:layout_height="match_parent"
android:background="@drawable/line"
android:gravity="center"
android:textSize="12sp"
android:paddingHorizontal="3dp"
android:lines="1"
android:textColor="@color/black"
android:textStyle="bold"
/>
<TextView
android:text="Remarks"
android:layout_width="90dp"
android:layout_column="1"
android:layout_height="match_parent"
android:background="@drawable/line"
android:gravity="center"
android:textSize="12sp"
android:paddingHorizontal="3dp"
android:lines="1"
android:textColor="@color/black"
android:textStyle="bold"
/>
</TableRow>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_for_posting"
android:layout_marginBottom="14dp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</TableLayout>
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
<LinearLayout
android:layout_below="@+id/ly_rece"
android:id="@+id/send_ly"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="90dp"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/savePosting"
android:layout_width="120dp"
android:layout_height="90dp"
android:background="@drawable/buttonup"
android:text="Save"
android:autoSizeMaxTextSize="14sp"
android:autoSizeMinTextSize="12sp"
android:autoSizeTextType="uniform"
android:layout_gravity="center"
android:textColor="@color/red"
android:gravity="center"
android:textStyle="bold"/>
<TextView
android:id="@+id/deletePosting"
android:layout_width="120dp"
android:layout_height="90dp"
android:background="@drawable/buttonup"
android:text="Delete"
android:autoSizeMaxTextSize="14sp"
android:autoSizeMinTextSize="12sp"
android:autoSizeTextType="uniform"
android:layout_gravity="center"
android:textColor="@color/red"
android:gravity="center"
android:textStyle="bold"/>
<TextView
android:id="@+id/postPosting"
android:layout_width="120dp"
android:layout_height="90dp"
android:background="@drawable/buttonup"
android:text="Post"
android:autoSizeMaxTextSize="14sp"
android:autoSizeMinTextSize="12sp"
android:autoSizeTextType="uniform"
android:layout_gravity="center"
android:textColor="@color/red"
android:gravity="center"
android:textStyle="bold"/>
</LinearLayout>
这里是错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication,PID: 6902
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
at com.example.myapplication.PostingActivity$2.onClick(PostingActivity.java:78)
at android.view.View.performClick(View.java:7448)
at android.view.View.performClickInternal(View.java:7425)
at android.view.View.access$3600(View.java:810)
at android.view.View$PerformClick.run(View.java:28305)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/Process:发送信号。 PID:6902 SIG:9
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。