[JAVA] [Kotlin / Android] Erstellen Sie eine benutzerdefinierte Ansicht

Was geschrieben steht

Was vorzubereiten?

  1. Fragment.java

  2. Adapter.java

  3. CustomView.java

  4. fragment_main.xml

  5. item_fragment.xml

  6. Fragment.java

Fragment.java



/**
 *Temperaturregelung Fragment-Bildschirmklasse
 */
class AdjustTempFragment : Fragment() {
    /**
     *Rasteransicht
     */
    private lateinit var gridView: GridView
    /**
     *Eine Art Informationsspeicher-Array
     */
    private lateinit var values: Array<HogeEnum>
    /**
     *Netzadapter
     */
    private lateinit var gridAdapter: GridAdapter

    /**
     *Begleitobjekt
     */
    companion object {
        /**
         *Kontext
         */
        lateinit var context: Context

        /**
         *Instanzgenerierungsmethode
         */
        fun createInstance(context: Context): Fragment {
            val fragment = Fragment()
            this.context = context
            return fragment
        }
    }

    /**
     *Initialisierungsmethode
     */
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        super.onCreateView(inflater, container, savedInstanceState)
        return inflater.inflate(R.layout.fragment_main, container, false)
    }

    /**
     *Hauptmethode
     *-Zeichnungsprozess anzeigen
     *・ Einstellen der Bildschirmübergangsverarbeitung
     */
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        //Benutzerdefinierte Ansicht zeichnen
        this.gridView = view.findViewById(R.id.grid)
        this.values = HogeEnum.values()
        this.adapter = Adapter(this.context, this.values)
        this.gridView.adapter = this.adapter
        //Übergang zum Einstellungsbildschirm
        val image: ImageView = view.findViewById(R.id.setting_button)
        image.setOnClickListener {
            val intent = Intent(activity, SettingActivity::class.java)
            startActivity(intent)
        }
    }
}  
  1. Adapter.java

Adapter.java


class Adapter : BaseAdapter {
    override fun getItemId(p0: Int): Long {
        return p0.toLong()
    }
    /**
     *Kontext
     */
    private lateinit var context: Context
    /**
     *Eine Art Informationsspeicher-Array
     */
    private var values: Array<HogeEnum>
    /**
     *Konstrukteur
     */
    constructor(con: Context?) {
        if (con != null) {
            this.context = con
        }
    }
    /**
     *Anzahl der Elemente im Array
     */
    override fun getCount(): Int {
        return this.values.size
    }
    /**
     *Elemente des Arrays
     */
    override fun getItem(p0: Int): Any {
        return this.values[p0]
    }
    /**
     *Zeichenmethode anzeigen
     */
    override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View {
        val itemLayoutView = p1 ?: View.inflate(this.context, R.layout.item_fragment, null)
        var viewHolder = itemLayoutView.tag
        if (viewHolder == null) {
            viewHolder = ViewHolder()
            viewHolder.customView = itemLayoutView.custom_view as CustomView
            (itemLayoutView.custom_view as CustomView).initView(
                this.values[p0].index()
            )
            itemLayoutView.tag = viewHolder
        }
        return itemLayoutView
    }
}
/**
 *Viewholder-Klasse
 */
class ViewHolder {
    lateinit var customView: CustomView
}
  1. CustomView.java

CustomView.java


class CustomView @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) {
    /**
     *Initialisierungsmethode
     */
    @SuppressLint("ResourceAsColor")
    fun initView() {
        var lp = LayoutParams(200, 200)
        var imageView = ImageView(context)
        imageView.layoutParams = lp
        this.addView(imageView)
    }
}
  1. fragment_main.xml

fragment_main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
        <GridView
            android:id="@+id/grid"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:numColumns="3">
        </GridView>
</LinearLayout>
  1. item_fragment.xml

item_fragment.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <jp.co.hoge.project.views.CustomView
        android:id="@+id/custom_view"
        android:layout_width="200dp"
        android:layout_height="200dp">
    </jp.co.hoge.project.views.CustomView>
</LinearLayout>

Recommended Posts

[Kotlin / Android] Erstellen Sie eine benutzerdefinierte Ansicht
Erstellen Sie mit SwiftUI 2.0 eine benutzerdefinierte Registerkartenansicht
Android-Welleneffekt (benutzerdefinierte Ansicht)
[Android] Erstellen Sie einen Kalender mit GridView
Android-Ansicht
[Android] Erstellen Sie eine quadratische Ansicht, während Sie das Seitenverhältnis beibehalten: SquareLayout
Docker Compact Manual (4: Erstellen eines benutzerdefinierten Bildes)
[Android] Erstellen Sie ein Schiebemenü ohne Verwendung der Navigationsansicht
[Android] Erstellen Sie eine neue Klasse, indem Sie ImageView erben
[Android / Kotlin] UI-Zusammenfassung
[Java] Erstellen Sie einen Filter
Erstellen Sie eine Chat-App mit WebSocket (Tyrus) + libGDX + Kotlin
[Android / Kotlin] Detaillierte Hinweise 2
[Kotlin / Android] Listener neu schreiben
Passen Sie die Listenansicht auf Android an
Erstellen eines benutzerdefinierten Scala ExecutionContext
Erstellen Sie eine Java-Methode [Memo] [java11]
[Java] Erstellen Sie eine temporäre Datei
Erstellen Sie ein VSCode-Plugin.
Erstellen Sie eine Lotterie mit Ruby
So erstellen Sie eine Methode
Erstellen Sie ein klares Zeitranking mit der Echtzeitdatenbank von Firebase (Android-App)
Ich habe versucht, eine einfache Karten-App in Android Studio zu erstellen
Ein Neuling versucht, die Android-Ansicht zusammenzufassen (Entwicklung von Android-Anfängern)
Fallen Sie, wenn Sie eine Ansicht animieren, die eine Android Recycler-Ansicht mit Übergang enthält
Feststellen, ob eine benutzerdefinierte Tastatur in Android Studio (Java) aktiviert ist