Listview仅将文本设置为第一个位置

问题描述 投票:0回答:1

Listview仅将文件名设置在第一位置。即使单击列表视图的任何位置,它也仅将文件名设置为第一个位置。请让我知道我需要进行哪些更改,以便仅在单击的项目上正确设置文件名,而不总是在第一个项目上设置文件名。提前致谢。下面是我的Activity类。

public class DocumentActivity extends AppCompatActivity implements View.OnClickListener{
    ImageView toolbar_back;
    TextView next,tvDocName;
    ListView 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_document);

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

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

      listView = ( ListView ) findViewById(R.id.recyclerView);

      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"));
      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);
          tvDocName.setText(selected.setDocument(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);
    tvDocName.setText(selected.setDocument(displayName));
             //My_document_adapter.display(displayName,position);
    adapter.notifyDataSetChanged();
  }
}

}}这是我的适配器。

public class    My_document_adapter extends BaseAdapter{
  ArrayList<Survey_vehiclepojo> mylist = new ArrayList<>();
  Context context;
  private static String s ;
  private static  int i;
  ListView listView;
  public My_document_adapter(ArrayList<Survey_vehiclepojo> mylist, Context context) {
    this.mylist = mylist;
    this.context = context;
  }
  public static void display(String displayName,int position) {
    s = displayName;
    i = position;
  }
  @Override
  public int getCount() {
    return mylist.size();
  }

  @Override
  public Object getItem(int i) {
    return null;
  }

  @Override
  public long getItemId(int i) {
    return 0;
  }

  @Override
  public View getView(final int position, View view, ViewGroup viewGroup) {
    if(view == null){
      view = LayoutInflater.from(context).inflate(R.layout.item_document,null);
    }
    final TextView tvDocName,name;
    ImageView ivDocument;
    final Survey_vehiclepojo vehiclepojo = mylist.get(position);
    name = view.findViewById(R.id.tvName);
    name.setText(vehiclepojo.getName());

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

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

    ivDocument.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {
  Log.d("**Postion", "Postion: "+position);
  (( DocumentActivity ) context).Document(position);
   tvDocName.setText(s);
  } });
    return view;
  }
}

这是我的行布局。

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/White">
    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_margin="12dp"
        android:text="Pay Slip"
        android:textColor="@color/Black"
        android:textSize="16dp"
        android:fontFamily="@font/proxima_regular" />

    <TextView
        android:id="@+id/tvDocName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="12dp"
        android:layout_marginLeft="12dp"
        android:layout_marginTop="12dp"
        android:layout_marginEnd="12dp"
        android:layout_marginRight="12dp"
        android:layout_marginBottom="12dp"
        android:layout_toLeftOf="@+id/tick"
        android:textColor="@color/Black" />
    <ImageView
        android:id="@+id/ivDocument"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_margin="12dp"
        android:layout_alignParentRight="true"
        app:srcCompat="@drawable/file"/>
    <ImageView
        android:id="@+id/tick"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_toLeftOf="@+id/ivDocument"
        android:layout_marginTop="12dp"
        android:layout_marginRight="5dp"
        app:srcCompat="@drawable/ic_tick_mark_green"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:background="#e6e6e6"
        android:layout_below="@+id/ivDocument"
        android:layout_marginTop="10dp"/>
</RelativeLayout>
android android-listview
1个回答
0
投票

我希望这能解决您的问题,将此用于活动

public class DocumentActivity extends AppCompatActivity implements View.OnClickListener{
ImageView toolbar_back;
TextView next,tvDocName;
ListView 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_document);

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

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

  listView = ( ListView ) findViewById(R.id.recyclerView);

  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"));
  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.setDocument(displayName);
              adapter.notifyDataSetChanged();
            }
        }
    }
    } else if (uriString.startsWith("file://")) {
        displayName = myFile.getName();
        tvDocName = findViewById(R.id.tvDocName);
        Survey_vehiclepojo selected=mylist.get(position);
        selected.setDocument(displayName);
        adapter.notifyDataSetChanged();
}
}
}

用于适配器使用此

public class    My_document_adapter extends BaseAdapter{
ArrayList<Survey_vehiclepojo> mylist = new ArrayList<>();
Context context;
private static String s ;
private static  int i;
ListView listView;
public My_document_adapter(ArrayList<Survey_vehiclepojo> mylist, Context context) {
  this.mylist = mylist;
  this.context = context;
}

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

@Override
public Object getItem(int i) {
  return mylist.get(i);
}

@Override
public long getItemId(int i) {
  return 0;
}

@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
  if(view == null){
    view = LayoutInflater.from(context).inflate(R.layout.item_document,null);
  }
  final TextView tvDocName,name;
  ImageView ivDocument;
  final Survey_vehiclepojo vehiclepojo = mylist.get(position);
  name = view.findViewById(R.id.tvName);
  name.setText(vehiclepojo.getName());

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

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

  ivDocument.setOnClickListener(new View.OnClickListener() { @Override public void 
  onClick(View view) {
  Log.d("**Postion", "Postion: "+position);
  (( DocumentActivity ) context).Document(position);
    } });
  return view;
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.