简体   繁体   English

如何在自定义ListView项目中更改图像-Android

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM