[英]How to change image in custom ListView item - Android
We are trying to change the image from a custom ListView item. 我们正在尝试从自定义ListView项更改图像。 We have tried everything to the point where the project wouldn't compile anymore.
我们已经尝试了一切,直到该项目不再编译为止。 We started over and got to the point where we want to set the image src from a ListView item to something else when the ListView item is tapped.
我们从头开始,直到要点按ListView项时将图像src从ListView项设置为其他内容。
This is our entire code: 这是我们的整个代码:
package com.example.namename.listview;
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] foods = {"Bacon","Ham","Tuna","Candy","Meatball","Potato"};
ListAdapter buckysAdapter = new CustomAdapter(this, foods);
ListView buckysListView = (ListView) findViewById(R.id.buckysListView);
buckysListView.setAdapter(buckysAdapter);
buckysListView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String food = String.valueOf(parent.getItemAtPosition(position));
Toast.makeText(MainActivity.this, food, Toast.LENGTH_SHORT).show();
}
}
);
}
}
package com.example.namename.listview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomAdapter extends ArrayAdapter<String> {
public CustomAdapter (Context context, String[] foods) {
super(context, R.layout.custom_row, foods);
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater buckysInflater = LayoutInflater.from(getContext());
View customView = buckysInflater.inflate(R.layout.custom_row, parent, false);
String singleFoodItem = getItem(position);
TextView buckysText = (TextView) customView.findViewById(R.id.buckysText);
ImageView buckysImage = (ImageView) customView.findViewById(R.id.buckysImage);
buckysText.setText(singleFoodItem);
buckysImage.setImageResource(R.drawable.deselected);
return customView;
}
}
-------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/custom_row">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/buckysImage"
android:src="@drawable/deselected"
android:layout_margin="5dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/buckysText"
android:layout_margin="5dp" />
</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/buckysListView"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
want to set the image src from a ListView item to something else when the ListView item is tapped
想要在轻按ListView项目时将图像src从ListView项目设置为其他内容
Use view
parameter of onItemClick
method to change ImageView
of selected row: 使用
onItemClick
方法的view
参数更改所选行的ImageView
:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
ImageView selectedImage = (ImageView) view.findViewById(R.id.buckysImage);
selectedImage.setImageResource(R.drawable.selected);
}
You can write a customView click listener method and then u can change the image as u wanted when ListView item is tapped. 您可以编写customView Click侦听器方法,然后在点按ListView项时可以根据需要更改图像。
customView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
buckysImage.setImageResource("Your Image Resource");
}
});
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater buckysInflater = LayoutInflater.from(getContext());
View customView = buckysInflater.inflate(R.layout.custom_row, parent, false);
String singleFoodItem = getItem(position);
TextView buckysText = (TextView) customView.findViewById(R.id.buckysText);
ImageView buckysImage = (ImageView) customView.findViewById(R.id.buckysImage);
buckysText.setText(singleFoodItem);
buckysImage.setImageResource(R.drawable.deselected);
// set a listener to buckysImage
buckysImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
buckysImage.setImageResource(R.id.newImage);
}
});
return customView;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.