2013-04-15 34 views
-2

所以这个列表以这种方式工作,当我点击该项目,该项目被删除。所以我想要它,当我点击该项目,它必须让我看看TimeDialog(TimePicker)更改日期和时间。点击列表视图,并能够得到一个时间Picker

mList = (ListView) findViewById(id.list); 
    mList.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> parent, View v, int position, long id)  { 
      mCursor.moveToPosition(position); 
      String rowId = mCursor.getString(0); //Column 0 of the cursor is the id 
      mDb.delete(MyDbHelper.TABLE_NAME, "_id = ?", new String[]{rowId}); 
      mCursor.requery(); 
      mAdapter.notifyDataSetChanged(); 

* 这里是我的MainActivity,我认为这将是有益的!!还包括列表视图! *

class MyDbHelper extends SQLiteOpenHelper { 

private static final String DB_NAME = "mydb"; 
private static final int DB_VERSION = 1; 

public static final String TABLE_NAME = "TaskTbl"; 
public static final String COL_TXT = "Text"; 
public static final String COL_DATE = "Date"; 
public static final String COL_TIME = "Time"; 
private static final String STRING_CREATE = "CREATE TABLE "+TABLE_NAME+" (_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " 
    +COL_TXT+" VARCHAR(250), "+COL_DATE+" VARCHAR(20), "+COL_TIME+" VARCHAR(20));"; 


public MyDbHelper(Context context) { 
    super(context, DB_NAME, null, DB_VERSION); 
} 
@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL(STRING_CREATE); 
    ContentValues cv = new ContentValues(2); 
    cv.put(COL_TXT, "New Entry"); 
    db.insert(TABLE_NAME, null, cv); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); 
    onCreate(db); 
} 
} 


    public class MainActivity extends ListActivity { 

public static final int RESULT_CODE = 1; 


MyDbHelper mHelper; 
SQLiteDatabase mDb; 
Cursor mCursor; 
SimpleCursorAdapter mAdapter; 
Intent weather;  
Intent i; 
String text; 
String date; 
String time; 
ListView mList; 
Intent nTaskScreen ; 


public TextView timeText; 
public TextView dateText; 
public EditText taskText; 




@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getWindow().setFormat(PixelFormat.RGBA_8888); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); 
    setContentView(R.layout.activity_main); 

    timeText = (TextView) findViewById(R.id.timeTxt); 
    dateText = (TextView) findViewById(R.id.dateTxt); 
    taskText = (EditText) findViewById(R.id.editText1); 

    mHelper = new MyDbHelper(getApplicationContext()); 

    Button showBtn = (Button) findViewById(R.id.shTask); 
    showBtn.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 




     } 
    }); 


    Button nTaskBtn = (Button) findViewById(R.id.nTask); 
    nTaskBtn.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      nTaskScreen = new Intent(MainActivity.this, new_task.class); 
      startActivityForResult(nTaskScreen, RESULT_CODE); 

     } 
    }); 

    Button wthrBtn = (Button) findViewById(R.id.wthrBtn); 
    registerForContextMenu(wthrBtn); 


    mList = (ListView) findViewById(id.list); 
    mList.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 


      int hourOfDay = 0, minute = 0; 




      TimePickerDialog tp = new TimePickerDialog(MainActivity.this, 
        mTimeSetListener, hourOfDay, minute, false); 
      tp.show(); 
     }; 


    TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 

     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      // TODO Auto-generated method stub 
      timeText.setText("" + hourOfDay + "" + minute); 
     }; 

    }; 

    }); 
    } 


public void onResume() { 
    super.onResume(); 
    mDb = mHelper.getWritableDatabase(); 
    String[] columns = new String[] {"_id", MyDbHelper.COL_TXT, MyDbHelper.COL_TIME}; 
    mCursor = mDb.query(MyDbHelper.TABLE_NAME, columns, null, null, null, null, null, null); 
    String[] headers = new String[] {MyDbHelper.COL_TXT, MyDbHelper.COL_TIME}; 
    mAdapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item, 
      mCursor, headers, new int[]{android.R.id.text1, android.R.id.text2}); 
    mList.setAdapter(mAdapter); 
} 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(resultCode==RESULT_CODE) 
    { 

     String text = data.getStringExtra("text"); 
     String date = data.getStringExtra("date"); 
     String time = data.getStringExtra("time"); 

     Toast.makeText(this, "Registration was successfull! \nTask: " +text + "\nOn: " + date + "\nat:" + time, Toast.LENGTH_LONG).show(); 

     ContentValues cv = new ContentValues(2); 
     cv.put(MyDbHelper.COL_TXT, text.toString()); 
     //cv.put(MyDbHelper.COL_DATE, date); //Insert 'now' as the date 
     cv.put(MyDbHelper.COL_TIME, time); 

     mDb.insert(MyDbHelper.TABLE_NAME, null, cv); 
     mCursor.requery(); 
     mAdapter.notifyDataSetChanged(); 
     text = null; 

      //mDb.execSQL("INSERT INTO TaskTbl (text,time,date) VALUES(" + "'" + text + "', '" + time + "', '" + date + "');");  

    } 

    super.onActivityResult(requestCode, resultCode, data); 

} 



} 
+0

想要删除该项目还是要在列表项目单击时显示TimeDialog?是否可以更简要地解释您的需求? –

+0

当我点击该项目时,我想向我展示TimeDialog.And,如果有可能将它保存在数据库中。所以你想让我展示你的项目吗?我拥有的2个活动会更容易些吗? –

回答

0

你可以通过意向的日期和时间数据,然后保存按钮,点击可以将数据保存到数据库和保存数据的onResume以前的活动,你可以重新加载光标并重新加载数据到列表视图后。并请说明你确切想要的。 你可以这样说:

listview.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> l, View arg1, int arg2, 
       long id) { 
      int hourOfDay = 0, minute = 0; 


      TimePickerDialog tp = new TimePickerDialog(MainActivity.this, 
        mTimeListener, hourOfDay, minute, false); 
      tp.show(); 

     } 
    }); 

哪里mTimeListener是如下:

TimePickerDialog.OnTimeSetListener maxtime = new OnTimeSetListener() { 

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     // TODO Auto-generated method stub 
     textview.setText("" + hourOfDay + "" + minute); 
    } 
}; 

希望它为你工作...

+0

我希望它很简单,你可以告诉我代码。所以当我点击列表中的项目时,我想让我显示TimeDialg(或TimePicker)来更改日期和时间。 –

+0

现在你可以参考答案.. @ Arjeta Ballazhi – AndiM

+0

我试过了,它显示TimePicker,但是当我选择时间,然后单击设置,然后我会得到一个错误和应用程序关闭。任何想法?因为我希望它也被存储在我选择的时间列表中。 –

1

如果要动态地添加布局的意见,你可以保存点击的位置&然后可以设置文字

添加视图到布局

final View v = View.inflate(MainActivity.this,R.layout.row_timw,null); 
final TextView txTextView = (TextView) v.findViewById(R.id.time); 
EditText hour11 = (EditText)v.findViewById(R.id.hour11); 
EditText hour22 = (EditText)v.findViewById(R.id.hour22); 
EditText minute11 = (EditText)v.findViewById(R.id.minute11); 
EditText minute22 = (EditText)v.findViewById(R.id.minute22); 
ArrayListhour11.add(hour11); 
ArrayListhour22.add(hour22); 
ArrayListminute11.add(minute11); 
ArrayListminute22.add(minute22); 

然后保存clciked位置&然后在时间或日期设置中获得值。

private TimePickerDialog.OnTimeSetListener timePickerListener1 = 
     new TimePickerDialog.OnTimeSetListener() { 
      public void onTimeSet(TimePicker view1, int selectedHour, 
            int selectedMinute) { 
       ArrayListhour11.get(clickedPos).setText(selectedHour+""); 
       ArrayListminute11.get(clickedPos).setText(selectedMinute+""); 
       showDialog(BOutTIME_DIALOG_ID); 
      } 
     }; 
相关问题