javascript - 如何在android中单击时将选定的行图标替换为列表项上的另一个图标

标签 javascript android listview

我尝试更改列表项点击上一行的图标,但没有成功。我遵循了其他 s/o 问题得到的建议,但最终没有成功。我尝试过类似的方法

@Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               ImageView imageView = ((ImageView) view);

               imageView.setImageResource(R.drawable.open);

               imageView.invalidate();

但到目前为止还没有任何效果。所以经过这么多天的研究,我真的不得不在这里发布这个。所以任何帮助、建议或推荐将不胜感激。

我的适配器:

public class ContactListAdapter extends BaseAdapter {

    Context context;
    ArrayList<ContactListItems> contactList;

    public ContactListAdapter(Context context, ArrayList<ContactListItems> list) {

        this.context = context;
        contactList = list;
    }

    @Override
    public int getCount() {

        return contactList.size();
    }

    @Override
    public Object getItem(int position) {

        return contactList.get(position);
    }

    @Override
    public long getItemId(int position) {

        return position;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {

        ContactListItems contactListItems = contactList.get(position);

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.contact_list_row, null);

        }
        TextView tvSlNo = (TextView) convertView.findViewById(R.id.tv_slno);
        tvSlNo.setText(contactListItems.getId());
        TextView tvName = (TextView) convertView.findViewById(R.id.tv_name);
        tvName.setText(contactListItems.getName());
        TextView tvPhone = (TextView) convertView.findViewById(R.id.tv_phone);
        tvPhone.setText(contactListItems.getSalary());

        return convertView;
}}

我填充 ListView 的位置:

public class Inbox extends Fragment {
    String ParsingDta= "{\"Employee\":[{\"id\":\"101\",\"name\":\"Class:\",\"salary\":\"SPC112 has been postponed to Wed 2.30pm @SR6  \"},{\"id\":\"102\",\"name\":\"Exams:\",\"salary\":\"There is a change of venue of SPY312 exam from NCT7 to NCT5\"},{\"id\":\"103\",\"name\":\"Exams:\",\"salary\":\"There is a slight change of venue of SPY312 exam from NCT7 to NCT5\"},{\"id\":\"104\",\"name\":\"Class:\",\"salary\":\"There is a slight change of venue of SPY312 exam from NCT5 to NCT6\"}]}";
    String str="";
    ListView listView;
    Database database;
    @Override
    public void onAttach(Activity activity){
        super.onAttach(activity);
        database=new Database(activity);
    }
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
        View rootView=inflater.inflate(R.layout.inbox,container,false);
        database.getWritableDatabase();
        listView=(ListView)rootView.findViewById(R.id.listView);

        try
        {
            JSONObject jsonObject=new JSONObject(ParsingDta);

            JSONArray jsonArray= jsonObject.getJSONArray("Employee");

            for(int i=0;i<jsonArray.length();i++)

            {
                JSONObject jsonObject1=jsonArray.getJSONObject(i);

                String id=jsonObject1.getString("id").toString();

                String name=jsonObject1.getString("name").toString();

                String salary=jsonObject1.getString("salary").toString();

                database.insertData(id,name,salary);

                str+="\n Employee"+i+ "\n name:"+name+"\n id:"+id+"\n salary:" +salary+"\n";

                //textView1.setText(str);
            }
        }
        catch(JSONException e)
        {
            e.printStackTrace();
        }
        ArrayList<ContactListItems> contactList =database.fetchData();
        ContactListAdapter contactListAdapter = new ContactListAdapter(
        getActivity().getApplicationContext(), contactList);
        listView.setAdapter(contactListAdapter);
       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               ImageView imageView = ((ImageView) view);

               imageView.setImageResource(R.drawable.open);

               imageView.invalidate();
               Intent intent=new Intent(getActivity().getApplicationContext(),InboxDetails.class);
               startActivity(intent);
           }
       });
        setListViewHeightBasedOnChildren(listView);
        return rootView;
    }

    private void setListViewHeightBasedOnChildren(ListView listView) {
        ContactListAdapter contactListAdapter  = (ContactListAdapter) listView.getAdapter();
        if (contactListAdapter == null)
            return;

        int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.UNSPECIFIED);
        int totalHeight = 0;
        View view = null;
        for (int i = 0; i < contactListAdapter.getCount(); i++) {
            view = contactListAdapter.getView(i, view,listView);
            if (i == 0)
                view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, ViewGroup.LayoutParams.WRAP_CONTENT));

            view.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
            totalHeight += view.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (contactListAdapter.getCount() - 1));
        listView.setLayoutParams(params);
        listView.requestLayout();
    }
}

联系人列表项目:

public class ContactListItems {
    String id;
    String name;
    String salary;
    public ImageView img;
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName( String name) {
        this.name = name;
    }

    public String getSalary() {
        return salary;
    }

    public void setSalary(String salary) {
        this.salary = salary;
    }

}

contact_list_row.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:paddingBottom="5dp"
    android:paddingTop="5dp"
    android:background="@drawable/list_background_selector"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/tv_slno"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="id"
        android:textColor="#000000"
        android:textSize="10dp"
        android:typeface="monospace"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="42dp"
        android:layout_marginEnd="42dp" />

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="title"
        android:textColor="#000000"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_marginLeft="14dp"
        android:layout_marginStart="14dp"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/imageView"
        android:layout_toEndOf="@+id/imageView" />

    <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/list"
        android:id="@+id/imageView"
        android:paddingTop="6dp"
        android:paddingBottom="6dp"
        android:layout_gravity="center_horizontal"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="16dp"
        android:layout_marginStart="16dp" />

    <TextView
        android:id="@+id/tv_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="description"
        android:singleLine="true"
        android:textColor="#000000"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_alignBottom="@+id/imageView"
        android:layout_alignLeft="@+id/tv_name"
        android:layout_alignStart="@+id/tv_name" />
</RelativeLayout>

最佳答案

尝试

@Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              /*******************************************************************/
               ImageView imageView = (ImageView)view.findViewById(R.id.imageView);
              /*******************************************************************/


               imageView.setImageResource(R.drawable.open);

               imageView.invalidate();

关于javascript - 如何在android中单击时将选定的行图标替换为列表项上的另一个图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30175801/

相关文章:

javascript - 获取关键代码/点击/触发更改事件

javascript - 将鼠标悬停在选项卡上并将其下拉

javascript - 在网页抓取上使用 Selenium 加载更多内容

Android C2DM 和 lib 项目

flutter - 如何将 ListView 添加到 Flutter 中的列?

android - ListFragment 不显示当前时间的变化

javascript - 为什么在绘制实线时会在 Canvas 上看到奇怪的曲线?

android - 自定义 Android View 中未显示渐变

java - 将字符串转换为类?

android - 以编程方式流畅地滚动 ListView