1
新增至android。我在一個GridView中創建了12個(3行,4列)按鈕,並且我按照教程按下按鈕後創建了一個toast以顯示某些東西。這些按鈕正確顯示在屏幕上,但吐司消息不是。當我按左上角的按鈕時,我得到左下角的烤麪包。當我按左中按鈕時,我得到中間右烤麪包。當我按下左下角按鈕時,我得到頂部正確烤麪包。android:使用按鈕適配器創建的按鈕的順序不正確
Visually:
button location:
1 2 3 4
5 6 7 8
9 10 11 12
toast message
9 10 11 12
8 7 6 5
4 3 2 1
這裏的適配器代碼:
public class KeypadAdapter extends BaseAdapter {
private Context mContext;
// Declare button click listener variable
private OnClickListener mOnButtonClick;
// Method to set button click listener variable
public void setOnButtonClickListener(OnClickListener listener) {
mOnButtonClick = listener;
}
public KeypadAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mButtons.length;
}
public Object getItem(int position) {
return mButtons[position];
}
public long getItemId(int position) {
return 0;
}
private KeypadButtons[] mButtons = { KeypadButtons.ADD,
KeypadButtons.SUBTRACT, KeypadButtons.MULTIPLY,
KeypadButtons.DIVIDE, KeypadButtons.DET, KeypadButtons.INV,
KeypadButtons.POW2, KeypadButtons.POWN, KeypadButtons.TRANSPOSE,
KeypadButtons.NORM1, KeypadButtons.NORM2, KeypadButtons.NORMINF };
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Button btn;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
btn = new Button(mContext);
KeypadButtons keypadButton = mButtons[position];
if (keypadButton != KeypadButtons.DUMMY) {
btn.setOnClickListener(mOnButtonClick);
}
// Set CalculatorButton enumeration as tag of the button so that we
// will use this information from our main view to identify what to
// do
btn.setTag(keypadButton);
} else {
btn = (Button) convertView;
}
btn.setText(mButtons[position].getText());
return btn;
}
}
和這裏的活動代碼
public class MainActivity extends Activity {
GridView mKeypadGrid;
KeypadAdapter mKeypadAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get reference to the keypad button GridView
mKeypadGrid = (GridView) findViewById(R.id.gridView);
// Create Keypad Adapter
mKeypadAdapter = new KeypadAdapter(this);
// Set adapter of the keypad grid
mKeypadGrid.setAdapter(mKeypadAdapter);
// Set button click listener of the keypad adapter
mKeypadAdapter.setOnButtonClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Button btn = (Button) v;
// Get the KeypadButton value which is used to identify the
// keypad button from the Button's tag
KeypadButtons keypadButton = (KeypadButtons) btn.getTag();
// Process keypad button
ProcessKeypadInput(keypadButton);
}
});
mKeypadGrid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
}
});
}
protected void ProcessKeypadInput(KeypadButtons keypadButton) {
// TODO Auto-generated method stub
Toast.makeText(
MainActivity.this,
keypadButton.getText().toString() + " "
+ keypadButton.toString(), Toast.LENGTH_SHORT).show();
}
}
起初似乎敬酒的順序顛倒過來。所以我試着做
KeypadButtons keypadButton = mButtons[mButtons.length - 1 - position];
固定底部兩行但他頂行仍然顛倒。
在此先感謝。