Java 坚持使用ListView和适配器
嗯,我试着做一个屏幕,它需要几个字段,然后,它发送信息到我的服务器。代码可以工作,我可以进行插入,但是现在,我正在尝试使用我的应用程序的类组的复选框选择器来完成屏幕 问题是,我在不同的课程中有不同数量的小组,所以我必须动态地做 我工作的班级是这个班。意见之间的代码是失败的地方Java 坚持使用ListView和适配器,java,android,android-layout,listview,checkbox,Java,Android,Android Layout,Listview,Checkbox,嗯,我试着做一个屏幕,它需要几个字段,然后,它发送信息到我的服务器。代码可以工作,我可以进行插入,但是现在,我正在尝试使用我的应用程序的类组的复选框选择器来完成屏幕 问题是,我在不同的课程中有不同数量的小组,所以我必须动态地做 我工作的班级是这个班。意见之间的代码是失败的地方 public class NuevaTarea extends Activity { EditText nombretarea; DatePicker fechainicio, fechafin;
public class NuevaTarea extends Activity {
EditText nombretarea;
DatePicker fechainicio, fechafin;
ExpandableListView listagrupos;
Button crear;
TimePicker horainicio, horafin;
ProgressDialog pDialog;
Httppostaux post;
CheckBox op1, op2, op3, op4, op5;
JSONArray Grupos;
ArrayList<PostData> data;
PostAdapter adapter;
ListView lista;
@SuppressWarnings("null")
public void onCreate(Bundle savedInstanceState) { {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_insertatarea);
nombretarea = (EditText) findViewById(R.id.editText1);
fechainicio = (DatePicker) findViewById(R.id.datePicker1);
fechafin = (DatePicker) findViewById(R.id.datePicker2);
listagrupos = (ExpandableListView) findViewById(R.id.expandableListView1);
crear = (Button) findViewById(R.id.buttoncrear);
horainicio = (TimePicker) findViewById(R.id.timePicker1);
horafin = (TimePicker) findViewById(R.id.timePicker2);
op1 = (CheckBox) findViewById(R.id.checkBox1);
op2 = (CheckBox) findViewById(R.id.checkBox2);
op3 = (CheckBox) findViewById(R.id.checkBox3);
op4 = (CheckBox) findViewById(R.id.checkBox4);
op5 = (CheckBox) findViewById(R.id.checkBox5);
//////////////// Grupos
Log.d("Grupos", "Previo Inicio");
if ( savedInstanceState == null) {
Log.d("Grupos", "SavedInstance == NULL");
Log.d("Todos los Grupos", "ARRAY GRUPOS = " + Constantes.cargainfogrupos);
//new asynccargagrupos().execute();
Log.d("Todos los Grupos", "ARRAY GRUPOS = " + Constantes.cargainfogrupos);
data = new ArrayList<PostData>();
if ( Constantes.cargainfogrupos != null) {
Log.d("Grupos", "Grupos != NULL");
Log.d("Grupos", "Dentro del WHILE");
String tex;
try {
Log.d("Grupos", "Dentro del Try");
for ( int i = 0; i < Constantes.cargainfogrupos.length(); i++){
Log.d("Grupos", "Dentro del For");
JSONObject jsonObject = Constantes.cargainfogrupos.getJSONObject(i);
tex = jsonObject.getString("nombregrupo");
data.add(new PostData(tex, false));
Log.d("Grupos", "Primera Vista a data" + data);
}
Log.d("Grupos", "Version de Data que paso a Adapter" + data);
adapter = new PostAdapter(NuevaTarea.this, data);
}
catch (Exception e){
}
}
}else {
Log.d("Grupos", "ELSE");
data = savedInstanceState.getParcelableArrayList("saveddata");
adapter = new PostAdapter(NuevaTarea.this, data);
}
ListView lv = (ListView) findViewById(android.R.id.list);
lv.setAdapter(adapter);
/////////////////// GRUPOS
当我尝试加载活动时,一切都正常,甚至在NuevaTarea.java for loop中也能很好地获取数据,但这就是问题所在。具体来说,从这里到那里,它不会通过
Log.d("Grupos", "Version de Data que paso a Adapter" + data);
adapter = new PostAdapter(NuevaTarea.this, data);
有什么想法吗?从堆栈跟踪中可以看出,您正在向日历视图投射一个线性布局,其中有一个名为Cursos的类 你可能有这样一句话
LinearLayout mLayout = (LinearLayout) findViewById(R.id.my_view);
但是id为R.id.my_的视图实际上是一个日历视图 问题是我在这个活动中没有日历视图,我在这里使用课程,所以我疯了。从Cursos?不,当应用程序尝试使用我没有正确初始化的字段“返回”到该活动时,我从Cursos获得错误。如果我在行与行之间注释代码//////Grupos,它工作得很好,我可以插入信息,但我必须从我试图创建的复选框中获取的字段除外,这是我创建的进步。在我的类numevatarea中,当我在这一行ListView lv=(ListView)findviewbyd(android.R.id.list)中出现错误时;它是R.id.listView1。我可以运行该活动,但它不能正常工作。我对XML有问题,因为我有重复项,我无法创建所有复选框,但至少它需要值从JSONArray到创建第一个.Hmmm都很有趣……一定是一行代码把一切都搞糟了。但我不确定它是什么…至少它起作用了,现在的问题是,在打印文本视图后,我调用了组,再次将我的所有活动屏幕翻倍,所以我有了全部四个复选框,而不是四个。
public class PostAdapter extends BaseAdapter {
static class ViewHolder
{
TextView tvFecha_pub;
TextView tvtitulo_post;
CheckBox cb;
}
private static final String TAG = "CustomAdapter";
private static int convertViewCounter = 0;
private ArrayList<PostData> data;
private LayoutInflater inflater = null;
public PostAdapter(Context c, ArrayList<PostData> d)
{
Log.v(TAG, "Constructing CustomAdapter");
this.data = d;
inflater = LayoutInflater.from(c);
}
@Override
public int getCount()
{
Log.v(TAG, "in getCount()");
return data.size();
}
@Override
public Object getItem(int position)
{
Log.v(TAG, "in getItem() for position " + position);
return data.get(position);
}
@Override
public long getItemId(int position)
{
Log.v(TAG, "in getItemId() for position " + position);
return position;
}
@Override
public int getViewTypeCount()
{
Log.v(TAG, "in getViewTypeCount()");
return 1;
}
@Override
public int getItemViewType(int position)
{
Log.v(TAG, "in getItemViewType() for position " + position);
return 0;
}
@Override
public void notifyDataSetChanged()
{
super.notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
Log.v(TAG, "in getView for position " + position + ", convertView is "
+ ((convertView == null) ? "null" : "being recycled"));
if (convertView == null)
{
convertView = inflater.inflate(R.layout.activity_insertatarea, null);
convertViewCounter++;
Log.v(TAG, convertViewCounter + " convertViews have been created");
holder = new ViewHolder();
holder.tvtitulo_post = (TextView) convertView
.findViewById(R.id.tvTitulo);
holder.cb = (CheckBox) convertView.findViewById(R.id.leido);
holder.cb.setOnClickListener(checkListener);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
// Para porde hacer click en el checkbox
PostData d = (PostData) getItem(position);
holder.cb.setTag(d);
// Setting all values in listview
holder.tvtitulo_post.setText(data.get(position).getEquipos());
holder.cb.setChecked(data.get(position).getChecked());
return convertView;
}
public void setCheck(int position)
{
PostData d = data.get(position);
d.setChecked(!d.getChecked());
notifyDataSetChanged();
}
public void checkAll(boolean state)
{
for (int i = 0; i < data.size(); i++)
data.get(i).setChecked(state);
}
public void cancelSelectedPost()
{
int i = 0;
while (i < getCount())
{
if (data.get(i).getChecked())
{
data.remove(data.indexOf(data.get(i)));
} else
i++;
}
notifyDataSetChanged();
}
public boolean haveSomethingSelected()
{
for (int i = 0; i < data.size(); i++)
if (data.get(i).getChecked())
return true;
return false;
}
/**
* Este método es para poder seleccionar una fila directamente con el
* checkbox en lugar de tener que pulsar en la liste en sí
*/
private OnClickListener checkListener = new OnClickListener()
{
@Override
public void onClick(View v)
{
PostData d = (PostData) v.getTag();
d.setChecked(!d.getChecked());
}
};
}
07-14 20:34:52.972: E/AndroidRuntime(5961): FATAL EXCEPTION: main
07-14 20:34:52.972: E/AndroidRuntime(5961): java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.CalendarView$WeekView
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.CalendarView.onScroll(CalendarView.java:1183)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.CalendarView.access$900(CalendarView.java:76)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.CalendarView$2.onScroll(CalendarView.java:1075)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1340)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.ListView.layoutChildren(ListView.java:1762)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.AbsListView.onLayout(AbsListView.java:2012)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1660)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.onLayout(LinearLayout.java:1436)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.ScrollView.onLayout(ScrollView.java:1459)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:349)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.View.layout(View.java:14289)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewGroup.layout(ViewGroup.java:4562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.Choreographer.doFrame(Choreographer.java:532)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.os.Handler.handleCallback(Handler.java:730)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.os.Handler.dispatchMessage(Handler.java:92)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.os.Looper.loop(Looper.java:137)
07-14 20:34:52.972: E/AndroidRuntime(5961): at android.app.ActivityThread.main(ActivityThread.java:5103)
07-14 20:34:52.972: E/AndroidRuntime(5961): at java.lang.reflect.Method.invokeNative(Native Method)
07-14 20:34:52.972: E/AndroidRuntime(5961): at java.lang.reflect.Method.invoke(Method.java:525)
07-14 20:34:52.972: E/AndroidRuntime(5961): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
07-14 20:34:52.972: E/AndroidRuntime(5961): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-14 20:34:52.972: E/AndroidRuntime(5961): at dalvik.system.NativeStart.main(Native Method)
07-14 20:39:55.014: E/AndroidRuntime(5993): FATAL EXCEPTION: main
07-14 20:39:55.014: E/AndroidRuntime(5993): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.PFC.pablo/com.PFC.pablo.Cursos}: java.lang.NullPointerException
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.os.Looper.loop(Looper.java:137)
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.app.ActivityThread.main(ActivityThread.java:5103)
07-14 20:39:55.014: E/AndroidRuntime(5993): at java.lang.reflect.Method.invokeNative(Native Method)
07-14 20:39:55.014: E/AndroidRuntime(5993): at java.lang.reflect.Method.invoke(Method.java:525)
07-14 20:39:55.014: E/AndroidRuntime(5993): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
07-14 20:39:55.014: E/AndroidRuntime(5993): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-14 20:39:55.014: E/AndroidRuntime(5993): at dalvik.system.NativeStart.main(Native Method)
07-14 20:39:55.014: E/AndroidRuntime(5993): Caused by: java.lang.NullPointerException
07-14 20:39:55.014: E/AndroidRuntime(5993): at com.PFC.pablo.Cursos.agregarFilasTabla(Cursos.java:113)
07-14 20:39:55.014: E/AndroidRuntime(5993): at com.PFC.pablo.Cursos.onCreate(Cursos.java:74)
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.app.Activity.performCreate(Activity.java:5133)
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-14 20:39:55.014: E/AndroidRuntime(5993): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
07-14 20:39:55.014: E/AndroidRuntime(5993): ... 11 more
Log.d("Grupos", "Version de Data que paso a Adapter" + data);
adapter = new PostAdapter(NuevaTarea.this, data);
LinearLayout mLayout = (LinearLayout) findViewById(R.id.my_view);