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>
我希望这能解决您的问题,将此用于活动
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;
}
}