0
對不起,我的英語很差。 我現在的目的是在Snackbar中顯示一個editText和gridView文本。當用戶單擊FAB時,此小工具顯示比他可以在editText中寫入某些內容時顯示。之後,用戶應該點擊GridView中顯示的一些GridViewAdapter生成的文本。我的代碼成功顯示editView和一些靜態按鈕在這裏the code,但它無法查看gridView。在這裏我最後的代碼,請幫我找到解決如何在LayoutInflater上顯示並獲取選擇GridView使用適配器
//grid view properties
GridView gridView;
List<String> ItemsList;
String selectedItem;
TextView GridViewItems,BackSelectedItem;
int backposition = -1;
String[] itemsName = new String[]{
"Fisika",
"Kimia",
"Biologi",
"Matematika",
};
private void setupUI() {
btnFab = (FloatingActionButton) findViewById(R.id.btnFloatingAction);
btnFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CoordinatorLayout linearLayout = (CoordinatorLayout)findViewById(R.id.coordinatorLayout);
final Snackbar snackbar = Snackbar.make(linearLayout, "", Snackbar.LENGTH_INDEFINITE);
Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
// Inflate your custom view with an Edit Text
LayoutInflater objLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View snackView = objLayoutInflater.inflate(R.layout.custom_snac_layout, null);
// custom_snac_layout is your custom xml
final EditText txt_event = (EditText) snackView.findViewById(R.id.event_text);
gridView = (GridView)findViewById(R.id.grid_view);
ItemsList = new ArrayList<String>(Arrays.asList(itemsName));
gridView.setAdapter(new GridViewAdapter(ParentActivity.this));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
selectedItem = parent.getItemAtPosition(position).toString();
GridViewItems = (TextView) view;
GridViewItems.setBackgroundColor(Color.parseColor("#814f00"));
GridViewItems.setTextColor(Color.parseColor("#fdfcfa"));
BackSelectedItem = (TextView) gridView.getChildAt(backposition);
if (backposition != -1)
{
BackSelectedItem.setSelected(false);
BackSelectedItem.setBackgroundColor(Color.parseColor("#fbdcbb"));
BackSelectedItem.setTextColor(Color.parseColor("#040404"));
}
backposition = position;
String event = txt_event.getText().toString();
Toast.makeText(ParentActivity.this, "Item selected "+ selectedItem +"Text "+event, Toast.LENGTH_LONG).show();
}
});
layout.addView(snackView, 0);
snackbar.show();
}
});
}
public class GridViewAdapter extends BaseAdapter {
Context context;
public GridViewAdapter(Context context)
{
this.context = context;
}
@Override
public int getCount() {
return itemsName.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return itemsName[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView text = new TextView(this.context);
text.setText(itemsName[position]);
text.setGravity(Gravity.CENTER);
text.setBackgroundColor(Color.parseColor("#fbdcbb"));
text.setTextColor(Color.parseColor("#040404"));
text.setLayoutParams(new GridView.LayoutParams(144, 144));
return text;
}
}
這裏我custom_snac_layout.xml代碼
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_alignParentTop="true"
android:id="@+id/event_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollHorizontally="false"
android:hint="@string/type_your_message"
android:inputType="textNoSuggestions"
android:maxLines="4"
android:singleLine="false"
android:textSize="18sp"
android:paddingLeft="4dp" />
<GridView
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/event_text"
android:layout_centerHorizontal="true"
android:numColumns="3"/>
在logcat的
試試這個:gridView =(GridView)snackView.findViewById(R.id.grid_view); – user2025187
感謝哥們,我忘了使用snackView, – fajarra