gpt4 book ai didi

android - 将动态子项添加到 ExpandableListView(添加记录时)

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:38 25 4
gpt4 key购买 nike

我需要将子项动态添加到可扩展 ListView 。在 addshare Activity 中添加我的记录后,我转到另一个传递 String 对象的 Activity (dynamic1)。在这里,我使用 String 对象作为参数添加新记录,并将 Intent 传回 MainActivity。investment_summary_main.xml 包含可扩展 ListView 。

动态 1 的代码:

public class dynamic1 extends Activity{
MyCustomAdapter c=new MyCustomAdapter();
String s;
private ExpandableListView mExpandableList;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.investment_summary_main);
if(getIntent().getExtras()!=null)
{ Intent intent = getIntent();
s = intent.getExtras().getString("k");
}
mExpandableList= (ExpandableListView) this.findViewById(R.id.expandable_list);
ExpandableListAdapter adapter = (ExpandableListAdapter) mExpandableList.getExpandableListAdapter();
((parent)adapter.getGroup(0)).getArrayChildren().add(s);
((BaseExpandableListAdapter) adapter).notifyDataSetChanged();
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
}
}

ADDSHARE 代码:

public class addshare extends Activity{
DBAdapter db = new DBAdapter(this);
MyCustomAdapter c=new MyCustomAdapter();
private ExpandableListView mExpandableList;
public void addshare(){}

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

public void addingshare(View v)
{
Log.d("test", "adding");
//get data from form
//EditText intypeid = (EditText)findViewById(R.id.intypeid);
EditText sharename= (EditText)findViewById(R.id.sharename);
EditText shareid = (EditText)findViewById(R.id.shareid);
EditText purpri = (EditText)findViewById(R.id.purpri);
EditText sharepri = (EditText)findViewById(R.id.sharepri);
EditText shareno = (EditText)findViewById(R.id.shareno);
EditText purdate = (EditText)findViewById(R.id.purdate);
EditText purplace = (EditText)findViewById(R.id.purplace);
EditText purcon = (EditText)findViewById(R.id.purcon);
Float totalinvestment=0F,currmarketvalue=0F;


String sname=sharename.getText().toString();

/* Intent i = new Intent(this, dynamicchild.class);
i.putExtra("k", sname);
startActivity(i);
*/

String s1=sharepri.getText().toString();
Float n1=Float.parseFloat(s1);

String s2=purpri.getText().toString();
Float n2=Float.parseFloat(s2);

// shares_equities s=new shares_equities( sname);
String s3=shareno.getText().toString();
Integer i1=Integer.parseInt(s3);
db.open();
long id = db.addRecord(sname, shareid.getText().toString(),
n2,n1,i1, purdate.getText().toString(),purplace.getText().toString(),purcon.getText().toString()
,totalinvestment,currmarketvalue);

db.close();

sharename.setText("");
shareid.setText("");
purpri.setText("");
sharepri.setText("");
shareno.setText("");
purdate.setText("");
purplace.setText("");
purcon.setText("");


Toast.makeText(addshare.this,"share record Added", Toast.LENGTH_LONG).show();


Intent i = new Intent(this, dynamic1.class);
i.putExtra("k", sname);
startActivity(i);

}
public void viewAssignments(View v)
{
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
}

}

investment_summary_main.xml 的代码

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

android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/slist"
>

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >


<ExpandableListView
android:id="@+id/expandable_list"
android:layout_width="fill_parent"
android:layout_height="400dp"
android:layout_weight="2900208.75"
android:cacheColorHint="#00000000"
android:listSelector="@android:color/transparent"
android:transcriptMode="disabled" />

<Button
android:id="@+id/addnew"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:text="ADD NEW"
android:onClick="sendMessage_addrecord" />
</LinearLayout>

最后是添加记录时出现的错误:

06-23 01:40:40.997: E/AndroidRuntime(484): FATAL EXCEPTION: main
06-23 01:40:40.997: E/AndroidRuntime(484): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.moolah/com.example.moolah.dynamic1}: java.lang.NullPointerException
06-23 01:40:40.997: E/AndroidRuntime(484): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
06-23 01:40:40.997: E/AndroidRuntime(484): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
06-23 01:40:40.997: E/AndroidRuntime(484): at android.app.ActivityThread.access$600(ActivityThread.java:122)
06-23 01:40:40.997: E/AndroidRuntime(484): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
06-23 01:40:40.997: E/AndroidRuntime(484): at android.os.Handler.dispatchMessage(Handler.java:99)
06-23 01:40:40.997: E/AndroidRuntime(484): at android.os.Looper.loop(Looper.java:137)
06-23 01:40:40.997: E/AndroidRuntime(484): at android.app.ActivityThread.main(ActivityThread.java:4340)
06-23 01:40:40.997: E/AndroidRuntime(484): at java.lang.reflect.Method.invokeNative(Native Method)
06-23 01:40:40.997: E/AndroidRuntime(484): at java.lang.reflect.Method.invoke(Method.java:511)
06-23 01:40:40.997: E/AndroidRuntime(484): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-23 01:40:40.997: E/AndroidRuntime(484): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-23 01:40:40.997: E/AndroidRuntime(484): at dalvik.system.NativeStart.main(Native Method)
06-23 01:40:40.997: E/AndroidRuntime(484): Caused by: java.lang.NullPointerException
06-23 01:40:40.997: E/AndroidRuntime(484): at com.example.moolah.dynamic1.onCreate(dynamic1.java:31)
06-23 01:40:40.997: E/AndroidRuntime(484): at android.app.Activity.performCreate(Activity.java:4465)
06-23 01:40:40.997: E/AndroidRuntime(484): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-23 01:40:40.997: E/AndroidRuntime(484): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
06-23 01:40:40.997: E/AndroidRuntime(484): ... 11 more

最佳答案

好的,在检查了您的整个代码后,我发现您是这样初始化自定义适配器的:

// notice that it's an empty constructor
MyCustomAdapter c = new MyCustomAdapter();

查看您的 MyCustomAdapter.java 我发现这个类有两个构造函数。一个是空的构造函数,另一个是这样的:

// You should use this one instead
public MyCustomAdapter(Context context, ArrayList<parent> parent){
mParent = parent;
c = context;
inflater = LayoutInflater.from(context);
}

在您的 dynamic1 Activity 中,您使用不接收 parentcontext 的空构造函数初始化 c >,因此当你打电话时:

int  i = c.getChildrenCount(0);

你会得到 NPE,因为 parentnull。要解决这个问题,请使用正确的构造函数实例化 c:

MyCustomAdapter c = new MyCustomAdapter(YourActivityContext, ParentArrayList);

关于android - 将动态子项添加到 ExpandableListView(添加记录时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com