Problem: CustomAdapter

  • 0 Antworten
  • Letztes Antwortdatum
R

Rumpel1984

Neues Mitglied
0
Hallo Leute,

ich habe folgendes Problem:

Ich habe einen Custom Adapter gemacht. Jedoch wird mein ListView damit nicht bevölkert.

Hier mal der Code:

Code:
public class customAdapter extends SimpleCursorAdapter{

    private Context mContext;
    private Context appContext;
    private int layout;
    private Cursor cr;
    private LayoutInflater inflater;

    public String LOG_TAG = getClass().getSimpleName();

    public customAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags){
        super(context, layout, c, from, to);
        this.layout=layout;
        this.mContext = context;
        this.inflater=LayoutInflater.from(context);
        this.cr=c;
    }

    @Override
    public View newView (Context context, Cursor cursor, ViewGroup parent) {
        return inflater.inflate(layout, null);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        super.bindView(view, context, cursor);
        TextView task=(TextView)view.findViewById(R.id.taskTextView);

        int task_index=cursor.getColumnIndexOrThrow(TaskContract.Columns.TASK);
        task.setText(cursor.getString(task_index));
    }

    @Override
    public View getView(int position, final View convertView, ViewGroup parent){
        View view = super.getView(position,convertView,parent);
        Random rnd = new Random();
        int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
        RelativeLayout relativeLayout = (RelativeLayout) view.findViewById(R.id.wrapper);
        relativeLayout.setBackgroundColor(color);
        Log.d(LOG_TAG, " getView");
        return relativeLayout;
    }

}

Code:
public class ToDoFragment extends Fragment {

    public String LOG_TAG = getClass().getSimpleName();
    private SimpleCursorAdapter mCustomAdapter;
    private TaskDBHelper dbHelper;

    public ToDoFragment(){

    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.to_to_fragment_menu, menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();
        if (id == R.id.action_add_task){
            addTask();
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.d(LOG_TAG, "onCreateView");
        dbHelper = new TaskDBHelper(getActivity());
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor c = db.query(TaskContract.TABLE,
                new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK},
                null, null, null, null, null);

        mCustomAdapter = new customAdapter(getActivity(),
                R.id.container, c,
                new String[]{TaskContract.Columns.TASK},
                new int[]{R.id.taskTextView},0);

        Log.d(LOG_TAG, " No.:" + c.getCount());
        View rooView = inflater.inflate(R.layout.to_do_fragment, container,false);
        ListView listView = (ListView) rooView.findViewById(R.id.fragment_listView);
        listView.setAdapter(mCustomAdapter);
        c.close();
        return rooView;
    }

    private void updateUI(LayoutInflater inflater, ViewGroup container) {
        dbHelper = new TaskDBHelper(getActivity());
        SQLiteDatabase sqlDB = dbHelper.getReadableDatabase();
        Cursor cursor = sqlDB.query(TaskContract.TABLE,
                new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK},
                null, null, null, null, null);

        mCustomAdapter = new customAdapter(getActivity(), R.layout.task,cursor,new String[]{TaskContract.Columns.TASK},new int[]{R.id.taskTextView},0);
        View rooView = inflater.inflate(R.layout.to_do_fragment, container, false);
        ListView listView = (ListView) rooView.findViewById(R.id.fragment_listView);
        listView.setAdapter(mCustomAdapter);
        cursor.close();
    }

    public void onDoneButtonClick(LayoutInflater inflater, ViewGroup container, View view) {
        View v = (View) view.getParent();
        TextView taskTextView = (TextView) v.findViewById(R.id.taskTextView);
        String task = taskTextView.getText().toString();

        String sql = String.format("DELETE FROM %s WHERE %s = '%s'",
                TaskContract.TABLE,
                TaskContract.Columns.TASK,
                task);


        dbHelper = new TaskDBHelper(getActivity());
        SQLiteDatabase sqlDB = dbHelper.getWritableDatabase();
        sqlDB.execSQL(sql);
        updateUI(inflater, container);
    }

    private void addTask(){
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Add a task");
        builder.setMessage("What do you want to do?");
        final EditText inputField = new EditText(getActivity());
        builder.setView(inputField);
        builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                String task = inputField.getText().toString();

                dbHelper = new TaskDBHelper(getActivity());
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.clear();
                values.put(TaskContract.Columns.TASK, task);
                db.insertWithOnConflict(TaskContract.TABLE, null, values, SQLiteDatabase.CONFLICT_IGNORE);
                Log.d(LOG_TAG, "addTask");
            }
        });
        builder.setNegativeButton("Cancel", null);
        builder.create().show();
        mCustomAdapter.notifyDataSetChanged();
    }
}
 
Zurück
Oben Unten