如何通过单击按钮更新自定义ListView

时间:2020-07-02 16:30:42

标签: android listview android-listview android-custom-view

我尝试使用自定义适配器显示自定义列表视图。可以很好地显示数据,但是当我尝试在单击按钮时添加新的项目表单EditTxt时出现错误。

无法为android:onClick执行方法

我无法在此列表中添加新项目。这里的名称将以EditText的形式出现,其他项目将保持不变。我尝试了很多方法,但没有得到我的解决方案。另一个问题是,活动开放的时间很少。你能告诉我这个问题吗..请检查代码...

Activity_phone_book.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <EditText
            android:layout_width="280dp"
            android:layout_height="40dp"
            android:layout_gravity="left"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:gravity="center|center_horizontal|center_vertical"
            android:text="Type Your Name"
            android:textSize="14sp"
            android:id="@+id/addNewName"/>
        <Button
            android:layout_width="100dp"
            android:id="@+id/addNew"
            android:onClick="addNewData"
            android:layout_height="40dp"
            android:layout_marginLeft="10dp"
            android:text="Add New" />
    </LinearLayout>
    <ListView
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

activity_array.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="horizontal" >
    <ImageView
        android:id="@+id/userImage"
        android:layout_width="109dp"
        android:layout_height="90dp"
        android:padding="5dp" />
    <LinearLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@+id/userName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_marginLeft="10dp"/>
        <TextView
            android:id="@+id/profile"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="5dp"
            android:padding="2dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#4d4d4d"
            android:textStyle="bold" />
    </LinearLayout>
</LinearLayout>

电话簿活动

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class PhoneBook extends AppCompatActivity {

    // Declare variable types
int[] images={R.drawable.pankaj,R.drawable.logo_red,R.drawable.about_us,R.drawable.buddy_1,
            R.drawable.buddy_2,R.drawable.contact_us,R.drawable.head_659651_640,R.drawable.login1,
            R.drawable.login2,R.drawable.login3};
String[] names={"Pankaj Kumar","Rahul","Prabhash","Rima","Kum","Rupali","Amrawati","Nabhya",
                 "Nidhi","Sonu"};
String[] profiles={ "Web Developer","Software Developer","Web Developer","Software Developer",
                   "Web Developer","Software Developer","Web Developer","Software Developer",
                   "Web Developer","Software Developer" };


Button addNew ;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phone_book);


        ListView listview =  (ListView)  findViewById(R.id.listView);
        CustomAdapter customAdapter  =  new CustomAdapter();
        listview.setAdapter(customAdapter);
    }
// here i want to add new Item using this function
    public  void addNewData( View v)
    {
        Toast.makeText(this, "length " + images.length, Toast.LENGTH_SHORT).show();
       # here i am try to add new item in Array. but getting error. many method applied here but now worked.please tell me how can i add new item form Edit Text...
        images = new int[R.drawable.login3]; 
    }


    class CustomAdapter extends  BaseAdapter{

        @Override
        public int getCount() {
            return images.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @SuppressLint("ViewHolder")
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            convertView =  getLayoutInflater().inflate(R.layout.activity_array ,null);

        ImageView  imageView = (ImageView)convertView.findViewById(R.id.userImage);
        TextView textView =  (TextView)convertView.findViewById(R.id.userName);
        TextView textView1 =  (TextView)convertView.findViewById(R.id.profile);

        imageView.setImageResource(images[position]);
        textView.setText(names[position]);
        textView1.setText(profiles[position]);
        return  convertView;
        }
    }

    class  CustomAdapter1 extends  BaseAdapter
    {

        @Override
        public int getCount() {
            return images.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @SuppressLint("ViewHolder")
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            convertView =  getLayoutInflater().inflate(R.layout.activity_array ,null);

            ImageView  imageView = (ImageView)convertView.findViewById(R.id.userImage);
            TextView textView =  (TextView)convertView.findViewById(R.id.userName);
            TextView textView1 =  (TextView)convertView.findViewById(R.id.profile);

            imageView.setImageResource(images[position]);
            textView.setText(names[position]);
            textView1.setText(profiles[position]);
            return  convertView;
        }
    }

}

0 个答案:

没有答案
相关问题