Android: ListView Click ImageButton Sử Dụng BaseAdapter ...

Thế Giới Giải Mã

Quảng Cáo Đầu Bài

Translate

Menu List

  • AAD1 (12)
  • ADD2 (11)
  • ADF2 (3)
  • adsense (4)
  • Ajax (5)
  • Android (32)
  • Angular 2 (59)
  • AngularJS (9)
  • Bảo Vật Quốc Gia (2)
  • Blogger (4)
  • Bootstrap 3 (2)
  • C (7)
  • C# (39)
  • Canvas (1)
  • Castles Abandoned (1)
  • Chiến Tranh Thế Giới 2 (5)
  • Chiến Tranh Việt Nam (12)
  • Command Line (5)
  • CSS (16)
  • Deploy errors (1)
  • Design pattern (8)
  • Điện Tử Vi Mạch (47)
  • Docker (1)
  • Domain (1)
  • eclipse (8)
  • EJB (9)
  • Excel (1)
  • Facebook (1)
  • Games pc (48)
  • giaima (116)
  • Git (5)
  • Google (2)
  • Hack (4)
  • Horror Videos (2)
  • Html (7)
  • java (60)
  • Java Advanced (14)
  • Java Collection (3)
  • Java Core (44)
  • Java Interview Questions (10)
  • JAVA Web Services (8)
  • JavaFX (2)
  • JavaScript (25)
  • Job Search (1)
  • jQuery (22)
  • JSF (7)
  • Json (7)
  • Jsp & Servlet (45)
  • Kiếm tiền online (8)
  • Kiến Thức (1)
  • Legendary and Feng Shui (2)
  • Link Website (6)
  • Linux (9)
  • Management (2)
  • Mobile (1)
  • Mua Bán (1)
  • MVC (1)
  • Mysql (5)
  • NetBeans (1)
  • News (1)
  • Nginx (1)
  • NodeJS (27)
  • QR Code (2)
  • Radio Online (3)
  • ReactJS (17)
  • ReactJS Antd Design (1)
  • ReactJS Notes (6)
  • ReactJS Redux (12)
  • Regex (1)
  • RxJS (1)
  • Shortcut (1)
  • Software (1)
  • spring (4)
  • Spring Boot (4)
  • Sql (23)
  • Struts 1 Framework (8)
  • Struts 2 Framework (27)
  • Swing (39)
  • Thủ thuật (1)
  • tools (11)
  • Tutorial (1)
  • Vietnam War History (8)
  • virus (2)
  • Visual studio (1)
  • Web (18)
  • Wifi (2)
  • Windows Store (47)
  • World War (4)
  • XML (26)
  • Youtube (14)

Total Pageviews

Giai Ma. Powered by Blogger.

12 January 2017

Android: ListView Click ImageButton Sử Dụng BaseAdapter & Interface (Android Studio)

By Admin at 2:52:00 PM Android No comments activity_main.xml Java Android 2017 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.lonely.listviewbaseadapter.MainActivity"> <ImageView android:id="@+id/iv_avatar_top" android:layout_width="match_parent" android:layout_height="110dp" android:background="#2400ccb1" android:layout_centerHorizontal="true" android:src="@drawable/person_avartar" /> <EditText android:id="@+id/ed_name_top" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Welcome" android:textColor="#9e0018" android:textSize="25sp" android:background="#2400ccb1" android:gravity="center" android:layout_marginBottom="20dp" android:layout_below="@id/iv_avatar_top" /> <ListView android:id="@+id/lv_contact" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/ed_name_top" /> </RelativeLayout> item_contact.xml Java Android 2017 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/iv_avatar" android:layout_width="70dp" android:layout_height="70dp" android:src="@drawable/avatar1" /> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="13dp" android:layout_toRightOf="@id/iv_avatar" android:text="Ewin Rommel" android:textColor="#000350" android:textSize="17sp" /> <TextView android:id="@+id/tv_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_name" android:layout_marginTop="5dp" android:layout_toRightOf="@id/iv_avatar" android:text="098372323" android:textColor="#ff0008" android:textSize="19sp" /> <LinearLayout android:id="@+id/ln_right_001" android:layout_alignParentRight="true" android:layout_marginTop="18dp" android:orientation="horizontal" android:layout_width="100dp" android:layout_height="wrap_content"> <ImageButton android:id="@+id/iv_btn_edit" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:src="@drawable/ic_action_edit" /> <ImageButton android:id="@+id/iv_btn_call" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:src="@drawable/ic_action_call" /> </LinearLayout> </RelativeLayout> MainActivity.java Java Android 2017 package com.example.lonely.listviewbaseadapter; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements IOnChildItemClick{ private ListView lvContact; private List<ContactModel> listContact = new ArrayList<>(); private ContactAdapter mAdapter; private TextView edNameTop; private ImageView ivAvatarTop; //Khi làm việc với ListView thường sẽ có 3 bước chính @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Bước 1: Tạo data initData(); initView(); //Bước 2: Tạo adapter ở ví dụ này chúng ta tự tạo một Adapter không phụ thuộc vào Adapter có sẵn mAdapter = new ContactAdapter(listContact, this); mAdapter.registerChildItemClick(this); //Bước 3: Tạo ListView Set adapter vào ListView lvContact.setAdapter(mAdapter); //Bắt sự kiện click vào ListView dòng bao nhiêu nhận biết thông qua position lvContact.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ContactModel contactModel = listContact.get(position); Toast.makeText(MainActivity.this, contactModel.getName(), Toast.LENGTH_SHORT).show(); } }); } public void initView(){ lvContact = (ListView) findViewById(R.id.lv_contact); edNameTop = (TextView) findViewById(R.id.ed_name_top); ivAvatarTop = (ImageView) findViewById(R.id.iv_avatar_top); } public void initData() { listContact.add(new ContactModel("Dương Triệu Vũ", "098987923521", R.drawable.avatar1)); listContact.add(new ContactModel("Dương Minh Ngọc", "098987923522", R.drawable.avatar2)); listContact.add(new ContactModel("Dương Hồng Tuyền", "098987923524", R.drawable.avatar3)); listContact.add(new ContactModel("Dương Tử Quỳnh", "098987923525", R.drawable.avatar4)); listContact.add(new ContactModel("Dương Anh Khang", "098987923521", R.drawable.avatar1)); listContact.add(new ContactModel("Đinh Diệu Linh", "098987923525", R.drawable.avatar2)); listContact.add(new ContactModel("Nguyễn Ngọc Anh", "098987923521", R.drawable.avatar3)); listContact.add(new ContactModel("Triệu Tài Vinh", "098987923522", R.drawable.avatar4)); listContact.add(new ContactModel("Hoàng Văn Kiên", "098987923524", R.drawable.avatar1)); } @Override protected void onDestroy() { super.onDestroy(); mAdapter.unRegisterChildItemClick(); } @Override public void onItemChildClick(int position) { ContactModel c = listContact.get(position); edNameTop.setText(c.getName()); ivAvatarTop.setImageResource(c.getImage()); } } ContactModel.java Java Android 2017 package com.example.lonely.listviewbaseadapter; /** * Created by Lonely on 1/12/2017. */ public class ContactModel { private String name; private String phone; private int image; public ContactModel(String name, String phone, int image) { this.phone = phone; this.image = image; this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public int getImage() { return image; } public void setImage(int image) { this.image = image; } } ContactAdapter.java Java Android 2017 package com.example.lonely.listviewbaseadapter; import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.support.v4.app.ActivityCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; /** * Created by Lonely on 1/12/2017. */ public class ContactAdapter extends BaseAdapter { private List<ContactModel> listContact; private Context mContext; private IOnChildItemClick iOnChildItemClick; public void registerChildItemClick(IOnChildItemClick iOnChildItemClick) { this.iOnChildItemClick = iOnChildItemClick; } public void unRegisterChildItemClick() { this.iOnChildItemClick = null; } public ContactAdapter(List<ContactModel> listContact, Context mContext) { this.listContact = listContact; this.mContext = mContext; } @Override public int getCount() { return listContact.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); convertView = inflater.inflate(R.layout.item_contact, null); ViewHolder holder = new ViewHolder(); holder.tvName = (TextView) convertView.findViewById(R.id.tv_name); holder.tvPhone = (TextView) convertView.findViewById(R.id.tv_phone); holder.ivAvatar = (ImageView) convertView.findViewById(R.id.iv_avatar); holder.ivBtnEdit = (ImageView) convertView.findViewById(R.id.iv_btn_edit); holder.ivBtnCall = (ImageView) convertView.findViewById(R.id.iv_btn_call); convertView.setTag(holder); } ViewHolder holder = (ViewHolder) convertView.getTag(); ContactModel model = listContact.get(position); holder.tvName.setText(model.getName()); holder.tvPhone.setText(model.getPhone()); holder.ivAvatar.setImageResource(model.getImage()); //Lắng nghe sự kiện click vào icon edit //dùng interface để gửi position qua MainActivity.java để setText & setImageResource //cách làm này có thể rất nhiều người chưa biết và tất cả các ví dụ trên internet chưa đề cập vấn đề này holder.ivBtnEdit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { iOnChildItemClick.onItemChildClick(position); } }); //Lắng nghe sự kiện click vào icon call holder.ivBtnCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCall(position); } }); return convertView; } //Tạo một lần duy nhất để tránh việc tạo nhiều lần làm chậm ứng dụng static class ViewHolder { TextView tvName; TextView tvPhone; ImageView ivAvatar; ImageView ivBtnEdit; ImageView ivBtnCall; } private void onCall(int position) { ContactModel contactModel = listContact.get(position); //======ACTION_CALL======// Intent intent = new Intent(android.content.Intent.ACTION_CALL, Uri.parse("tel:" + contactModel.getPhone())); //Nếu dùng ACTION_CALL khi startActivity(intent) nó generate (sinh ra) phần chữ TO DO màu đen nhạt phía dưới if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } //=====ACTION_DIAL======// //Còn nếu sử dụng ACTION_DIAL thì hoàn toàn không có như phần ACTION_CALL//Intent intent = new Intent(android.content.Intent.ACTION_DIAL, Uri.parse("tel:"+contactModel.getPhone()));mContext.startActivity(intent); } } IOnChildItemClick.java Java Android 2017 package com.example.lonely.listviewbaseadapter; /** * Created by Lonely on 1/12/2017. */ //Interface nó rất linh hoạt nếu chúng ta biết sử dụng nó vì với này public interface IOnChildItemClick { void onItemChildClick(int position); } Download icon zip | Download project zip ← Newer Post Older Post → Home

0 nhận xét:

Post a Comment

facebook tweeter google linked in rss

Meditation Music , Relaxing Music

Bài đăng nổi bật

  • Video bocah berazil - Horror Videos Video bocah berazil "Warning: Can cause psychological trauma" (Video no sensor di bawah)  Ceritanya : Ini adalah persaingan jual b...
  • ☠️ Video chặt đầu nấu chín nạn nhân Nguyễn Xuân Đạt và 88 trang tài liệu tổng hợp về nghi phạm Đoàn Văn Sáng - Horror Videos "☠️Video kinh dị và 88 trang tài liệu" "Cảnh báo: Có thể gây chấn thương tâm lý"   Nạ...
  • Create and Publish Library in Angular 2+ (very basic - NPM)   Create  > build >  adduser npm  > publish 2021 Library Angular 2+   Step 1: ng new my-workspace --create-application = false ...
  • Chiến dịch Đắk Tô - Tân Cảnh 1967 - Battle of Dak To November 1967 Trận Đắk Tô - Tân Cảnh Chiến dịch Đắk Tô - Tân Cảnh hay Trận Đắk Tô - Tân Cảnh năm 1967 , là một trận đụng độ trực tiếp giữa Quân Giải p...
  • [@ant-design/icons-angular]: the icon reload-o does not exist or is not registered - Angular 2+  ERROR Error: [@ant-design/icons-angular]: the icon reload-o does not exist or is not registered Fix this here! Fix issue! Antd-Design Angul...

Túy Hoa Âm & Nhất Tiễn Mai

Top site

  • Angular-2-training
  • Mergevideo
  • Reactjs Router V5
  • Addaudiotovideo
  • Mp3tovideo
  • Tunestotube
  • Bootstrap Cheatsheet
  • Photo Editor
  • Download Video China Site
  • React Usehooks
  • React Hooks Core
  • iCSS
  • JS Interview
  • Replicate AI
  • Angular Blog
  • Game PS3
  • Kebab Case
  • CSS Polygon
  • CSS Design
  • FE Tool
  • MySQL
  • Thủ Thuật FB
  • Glitch
  • Carbon
  • SSL Config
  • Server World
  • Useweb3
  • Git Branching
  • Rapidapi
  • Algorithm Visualizer
  • JSV 9000
  • Create Slide
  • Giải Phương Trinh
  • Grammar checker
  • Benchmark framework
  • Replicate explore
  • Replicate animesr

Best Friend

  Copyright © Thế Giới Giải Mã | Powered by Google Designed by Duong Huu Dai Tel: 0845.882.882 | Author Lasantha Bandara

BACK TO TOP

Xuống cuối trang

Từ khóa » Cách Dùng Imagebutton