Blok NOKTA

NOKTA.plus

2020.01.02

Android'de bir ListView'da görüntü ve metin listesi nasıl görüntülenir?

Liste görünümü örneğine girmeden önce, liste görünümü hakkında bilgi sahibi olmalıyız, Liste Görünümü arraylist, listeden veya herhangi bir veritabanından alınan öğelerin bir koleksiyonudur. Liste görünümünün çoğu kullanımı, dikey biçimde bir öğe koleksiyonudur, yukarı / aşağı kaydırıp herhangi bir öğeye tıklayabiliriz.

Özelieştirilmiş listview nedir?

ListView liste görünümü customAdapter tabanlı çalışır. Bu özel bağdaştırıcıda (Adapter) özel nesne iletebiliriz. Konu verilerini aşağıda gösterildiği gibi liste görünümüne geçiriyoruz.

Adım 1 - Android Studio'da yeni bir proje oluşturun, Dosya ⇒ Yeni Proje'ye gidin ve yeni bir proje oluşturmak için gerekli tüm ayrıntıları doldurun.

Adım 2 - res / layout / activity_main.xml dosyasına aşağıdaki kodu ekleyin.

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout
   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">
<LinearLayout
   android:layout_width = "match_parent"
   android:layout_height = "match_parent"
   android:orientation = "vertical">
   <ListView
      android:id = "@+id/list"
      android:layout_width = "wrap_content"
      android:layout_height = "match_parent"
      android:divider = "#000"
      android:dividerHeight = "1dp"
      android:footerDividersEnabled = "false"
      android:headerDividersEnabled = "false"/>



Yukarıdaki activity_main.xml dosyasında, bir liste görünümü bildirdik ve aşağıda gösterildiği gibi bir ayırıcı ekledik.

<ListView    android:id = "@+id/list"    android:layout_width = "wrap_content"    android:layout_height = "match_parent"    android:divider = "#000"    android:dividerHeight = "1dp"    android:footerDividersEnabled = "false"    android:headerDividersEnabled = "false" />

Adım 3 - src / MainActivity.java dizinine aşağıdaki kodu ekleyin

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      final ListView list = findViewById(R.id.list);
      ArrayList<SubjectData> arrayList = new ArrayList<SubjectData>();
      arrayList.add(new SubjectData("JAVA", "https://www.tutorialspoint.com/java/", "https://www.tutorialspoint.com/java/images/java-mini-logo.jpg"));
      arrayList.add(new SubjectData("Python", "https://www.tutorialspoint.com/python/", "https://www.tutorialspoint.com/python/images/python-mini.jpg"));
      arrayList.add(new SubjectData("Javascript", "https://www.tutorialspoint.com/javascript/", "https://www.tutorialspoint.com/javascript/images/javascript-mini-logo.jpg"));
      arrayList.add(new SubjectData("Cprogramming", "https://www.tutorialspoint.com/cprogramming/", "https://www.tutorialspoint.com/cprogramming/images/c-mini-logo.jpg"));
      arrayList.add(new SubjectData("Cplusplus", "https://www.tutorialspoint.com/cplusplus/", "https://www.tutorialspoint.com/cplusplus/images/cpp-mini-logo.jpg"));
      arrayList.add(new SubjectData("Android", "https://www.tutorialspoint.com/android/", "https://www.tutorialspoint.com/android/images/android-mini-logo.jpg"));
      CustomAdapter customAdapter = new CustomAdapter(this, arrayList);
      list.setAdapter(customAdapter);
   }
}
MainActivity'de Özel Bağdaştırıcı beyan ettik ve Konu Verilerini aşağıda gösterildiği gibi geçtik.
CustomAdapter customAdapter = new CustomAdapter(this, arrayList);
list.setAdapter(customAdapter);

Adım 4 - CustomAdapter sınıfı oluşturma src / CustomAdapter.java için aşağıdaki kodu ekleyin

import android.content.Context;
import android.database.DataSetObserver;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
class CustomAdapter implements ListAdapter {
 ArrayList<SubjectData> arrayList;
 Context context;
 public CustomAdapter(Context context, ArrayList<SubjectData> arrayList) {
    this.arrayList=arrayList;
    this.context=context;
 }    
   @Override public boolean areAllItemsEnabled() { return false;}
 @Override
 public boolean isEnabled(int position) {
    return true;
 }
   @Override public void registerDataSetObserver(DataSetObserver observer) {   }
 @Override public void unregisterDataSetObserver(DataSetObserver observer) {   }
 @Override public int getCount() {      return arrayList.size();   }
 @Override public Object getItem(int position) {      return position;   }
 @Override public long getItemId(int position) {      return position;   }
 @Override public boolean hasStableIds() {      return false;   }
 @Override public View getView(int position, View convertView, ViewGroup parent) {
    SubjectData subjectData = arrayList.get(position);
    if(convertView == null) {
       LayoutInflater layoutInflater = LayoutInflater.from(context);
       convertView = layoutInflater.inflate(R.layout.list_row, null);
       convertView.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {             }          });
       TextView tittle = convertView.findViewById(R.id.title);
       ImageView imag = convertView.findViewById(R.id.list_image);
       tittle.setText(subjectData.SubjectName);
       Picasso.with(context).load(subjectData.Image).into(imag);
    }
    return convertView;
 }
 @Override public int getItemViewType(int position) {      return position;   }
 @Override public int getViewTypeCount() {      return arrayList.size();   }
 @Override public boolean isEmpty() {      return false;   }
}

Adım 5 - SubjectData sınıfı oluşturma, src / SubjectData.java dosyasına aşağıdaki kodu ekleyin

class SubjectData {
   String SubjectName;
   String Link;
   String Image;
   public SubjectData(String subjectName, String link, String image) {
      this.SubjectName = subjectName;
      this.Link = link;
      this.Image = image;
   }
}

Adım 6 - CustomAdapter sınıfında internet kaynak görüntüsü gösterdik. İnternet kaynak görüntüsünü göstermek için. picasso kütüphanesini aşağıda gösterildiği gibi ekledik.

Picasso.with(context)
.load(subjectData.Image)
.into(imag);

Adım 7 - Picasso kütüphanesinin uygulanması için, aşağıda gösterildiği gibi grabe içinde picasso kütüphanesi eklemeliyiz

apply plugin: 'com.android.application'
android {
   compileSdkVersion 28
   defaultConfig {
      applicationId "com.example.andy.myapplication"
      minSdkVersion 15
      targetSdkVersion 28
      versionCode 1
      versionName "1.0"
      testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
   }
   buildTypes {
      release {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      }
   }
}
dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:28.0.0'
   implementation 'com.android.support.constraint:constraint-layout:1.1.3'
   testImplementation 'junit:junit:4.12'
   implementation 'com.squareup.picasso:picasso:2.5.1'
   androidTestImplementation 'com.android.support.test:runner:1.0.2'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}   

8.Adım - İnternet bilgilerine erişmek için, aşağıda gösterildiği gibi dosya açması için internet izni vermeliyiz

<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
package = "com.example.andy.myapplication">
<uses-permission android:name = "android.permission.INTERNET"/>
   <application
      android:allowBackup = "true"
      android:icon = "@mipmap/ic_launcher"
      android:label = "@string/app_name"
      android:roundIcon = "@mipmap/ic_launcher_round"
      android:supportsRtl = "true"
      android:theme = "@style/AppTheme">
      <activity android:name = ".MainActivity">
         
            <action android:name = "android.intent.action.MAIN" />
            <category android:name = "android.intent.category.LAUNCHER" />
         
      
   

Uygulamanızı çalıştırmayı deneyelim. Gerçek Android Mobil cihazınızı bilgisayarınıza bağladığınızı varsayıyorum. Uygulamayı android studio'dan çalıştırmak için, projenizin etkinlik dosyalarından birini açın ve araç çubuğundan Oynat Simgesini Çalıştır simgesini tıklayın. Bir seçenek olarak mobil cihazınızı seçin ve ardından varsayılan ekranınızı görüntüleyecek mobil cihazınızı kontrol edin.

Orjinal Makale TIKLA