Listview устанавливает текст только для первой позиции - PullRequest
0 голосов
/ 02 марта 2020

Listview устанавливает имя файла только в первой позиции. Даже если щелкнуть любую позицию в списке, он задает имя файла только для первой позиции. Пожалуйста, дайте мне знать, какие изменения мне нужно сделать, чтобы имя файла было установлено правильно только на выбранный элемент, а не на первый элемент всегда. Заранее спасибо.

1 Ответ

0 голосов
/ 02 марта 2020

Я сделал то же самое в представлении корзины, я делюсь с вами кодом своего проекта

package com.deepak.myapplication;

public class DocumentActivity extends AppCompatActivity implements 
View.OnClickListener {
ImageView toolbar_back;
TextView next, tvDocName;
RecyclerView listView;
ArrayList<Survey_vehiclepojo> mylist = new ArrayList();
My_document_adapter adapter;
private int position;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //toolbar_back = ( ImageView ) findViewById(R.id.toolbar_back);
    //toolbar_back.setOnClickListener(this);

    //next = ( TextView ) findViewById(R.id.next);
    //next.setOnClickListener(this);

    listView = findViewById(R.id.recycleView);

    mylist.add(new Survey_vehiclepojo("Pay Slip", "file1"));
    mylist.add(new Survey_vehiclepojo("Insurance", "file2"));
    mylist.add(new Survey_vehiclepojo("NA Certificate", "file3"));
    mylist.add(new Survey_vehiclepojo("NA 1", "file3"));
    mylist.add(new Survey_vehiclepojo("NA 2", "file3"));
    mylist.add(new Survey_vehiclepojo("NA 3", "file3"));
    listView.setLayoutManager(new LinearLayoutManager(this));
    adapter = new My_document_adapter(mylist, DocumentActivity.this);
    listView.setAdapter(adapter);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    /*case R.id.toolbar_back:
    finish();
    break;
    case R.id.next:
    Intent n=new Intent(DocumentActivity.this, Loan_checklistActivity.class);
    startActivity(n);
    break;
    }*/
    }
}

public void Document(int pos) {
    position = pos;
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("*/*");
    startActivityForResult(intent, position);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    selectedFile(data, requestCode);
}

private void selectedFile(Intent data, int position) {
    String displayName = null;
    if (data != null) {
        Uri uri = data.getData();
        String uriString = null;

        if (uri != null) {
            uriString = uri.toString();
        }
        File myFile = new File(uriString);
        String path = myFile.getAbsolutePath();

        if (uriString != null) {
            if (uriString.startsWith("content://")) {
                try (Cursor cursor = DocumentActivity.this.getContentResolver().query(uri, null, null, null, null)) {
                    if (cursor != null && cursor.moveToFirst()) {
                        displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
                        tvDocName = findViewById(R.id.tvDocName);
                        Survey_vehiclepojo selected = mylist.get(position);
                        selected.setFile1(displayName);

                        //My_document_adapter.display(displayName,position);
                        adapter.notifyDataSetChanged();
                    }
                }
            }
        } else if (uriString.startsWith("file://")) {
            displayName = myFile.getName();
            tvDocName = findViewById(R.id.tvDocName);
            Survey_vehiclepojo selected = mylist.get(position);
            selected.setFile1(displayName);
            //My_document_adapter.display(displayName,position);
            adapter.notifyDataSetChanged();
        }
    }
}

}

Это адаптер

class My_document_adapter extends 
RecyclerView.Adapter<My_document_adapter.ViewHolder>{
ArrayList<Survey_vehiclepojo> mylist;
DocumentActivity documentActivity;

public My_document_adapter(ArrayList<Survey_vehiclepojo> mylist, 
DocumentActivity documentActivity) {
    this.mylist = mylist;
    this.documentActivity = documentActivity;
}

@NonNull
@Override
public My_document_adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup 
parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item, parent, false);
    return new My_document_adapter.ViewHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull My_document_adapter.ViewHolder holder, 
final int position) {

    holder.name.setText("name"+position);
    holder.ivDocument.setOnClickListener(new View.OnClickListener() { 
   @Override public void onClick(View view) {
        Log.d("**Postion", "Postion: "+position);
        documentActivity.Document(position);

    } });
}

@Override
public int getItemCount() {
    return mylist.size();
}


public class ViewHolder extends RecyclerView.ViewHolder {

    final TextView tvDocName,name;
    ImageView ivDocument;


    public ViewHolder(@NonNull View view) {
        super(view);
        name = view.findViewById(R.id.tvName);


        tvDocName = view.findViewById(R.id.tvDocName);

        ivDocument = view.findViewById(R.id.ivDocument);
    }
  }
 }

и мой файл выбирает см. этот скриншот enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...