如何在RecyclerView Android中获取item的具体位置

如何解决如何在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 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res