Я хочу, чтобы мой GridView
отображал только 16 случайных букв, 4x4 плитки, и, если возможно, я не хочу пробела между буквами. Я также хочу, чтобы он отобразил соответствующий текст в TextView
, чтобы сформировать слово. Сейчас я поставил его в тост, чтобы показать, как это должно быть. Но он отображает только соответствующую букву изображения. Как я могу это достичь? Я не знаю, как это сделать. Любая помощь будет оценена по достоинству.Манипулирование GridView
Новое в Android Программирование
grid_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp" >
<ImageView
android:id="@+id/imageView"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginRight="1dp"
android:layout_marginEnd="1dp"
android:contentDescription="@string/hello_world"
android:src="@drawable/ic_launcher" >
</ImageView>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:textSize="15sp"
android:visibility="gone" >
</TextView>
</LinearLayout>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.grid.gridgame.MainActivity" >
<TextView
android:id="@+id/wordHere"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1234567890"/>
<GridView
android:id="@+id/gridViewCustom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="1dp"
android:columnWidth="80dp"
android:gravity="center"
android:horizontalSpacing="0dp"
android:numColumns="4"
android:stretchMode="columnWidth"
android:verticalSpacing="0dp" />
</RelativeLayout>
MainActivity.java
package com.grid.gridgame;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
\t
\t GridView gridView;
\t String word;
\t int rando;
\t static final String[] setOne = new String[] {
\t \t "A", "M","C", "Qu",
\t \t "Z", "B", "D", "A",
\t \t "E", "I", "E", "L",
\t \t "M", "N", "T", "P" };
\t
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.gridViewCustom);
gridView.setAdapter(new GridViewCustomAdapter(this, setOne));
\t \t gridView.setOnItemClickListener(new OnItemClickListener() {
\t \t \t public void onItemClick(AdapterView<?> parent, View v,
\t \t \t \t \t int position, long id) {
\t \t \t \t
\t \t \t \t Toast.makeText(
\t \t \t \t getApplicationContext(),
\t \t \t \t ((TextView) v.findViewById(R.id.textView))
\t \t \t \t .getText(), Toast.LENGTH_SHORT).show();
\t \t \t }
\t \t });
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
GridViewCustomAdapter
package com.grid.gridgame;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class GridViewCustomAdapter extends BaseAdapter {
\t private Context context;
\t private final String[] setOne;
\t public GridViewCustomAdapter(Context context, String[] setOne) {
\t \t this.context = context;
\t \t this.setOne = setOne;
\t }
\t public View getView(int position, View convertView, ViewGroup parent) {
\t \t LayoutInflater inflater = (LayoutInflater) context
\t \t \t .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
\t \t View gridView;
\t \t if (convertView == null) {
\t \t \t convertView = new ImageView(context);
\t \t \t gridView = new View(context);
\t \t \t // get layout from mobile.xml
\t \t \t gridView = inflater.inflate(R.layout.grid_row, null);
\t \t \t // set value into TextView
\t \t \t TextView textView = (TextView) gridView
\t \t \t \t \t .findViewById(R.id.textView);
\t \t \t
\t \t \t textView.setText(setOne[position]);
\t \t \t // set image based on selected text
\t \t \t ImageView imageView = (ImageView) gridView
\t \t \t \t \t .findViewById(R.id.imageView);
\t \t \t imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
\t imageView.setPadding(0, 0, 0, 0);
\t \t \t String allletters = setOne[position];
\t \t \t
\t \t \t if (allletters.equals("A")) {
\t \t \t \t imageView.setImageResource(R.drawable.a);
\t \t \t } else if (allletters.equals("M")) {
\t \t \t \t imageView.setImageResource(R.drawable.m);
\t \t \t } else if (allletters.equals("C")) {
\t \t \t \t imageView.setImageResource(R.drawable.c);
\t \t \t } else if (allletters.equals("Qu")) {
\t \t \t \t imageView.setImageResource(R.drawable.qu);
\t \t \t \t
\t \t \t } else if (allletters.equals("Z")) {
\t \t \t \t imageView.setImageResource(R.drawable.z);
\t \t \t } else if (allletters.equals("B")) {
\t \t \t \t imageView.setImageResource(R.drawable.b);
\t \t \t } else if (allletters.equals("D")) {
\t \t \t \t imageView.setImageResource(R.drawable.d);
\t \t \t } else if (allletters.equals("A")) {
\t \t \t \t imageView.setImageResource(R.drawable.a);
\t \t \t \t
\t \t \t } else if (allletters.equals("E")) {
\t \t \t \t imageView.setImageResource(R.drawable.e);
\t \t \t } else if (allletters.equals("I")) {
\t \t \t \t imageView.setImageResource(R.drawable.i);
\t \t \t } else if (allletters.equals("E")) {
\t \t \t \t imageView.setImageResource(R.drawable.e);
\t \t \t } else if (allletters.equals("M")) {
\t \t \t \t imageView.setImageResource(R.drawable.m);
\t \t \t \t
\t \t \t } else if (allletters.equals("M")) {
\t \t \t \t imageView.setImageResource(R.drawable.m);
\t \t \t } else if (allletters.equals("N")) {
\t \t \t \t imageView.setImageResource(R.drawable.n);
\t \t \t } else if (allletters.equals("T")) {
\t \t \t \t imageView.setImageResource(R.drawable.t);
\t \t \t } else if (allletters.equals("P")) {
\t \t \t \t imageView.setImageResource(R.drawable.p);
\t \t \t }
\t \t } else {
\t \t \t gridView = (View) convertView;
\t \t \t
\t \t }
\t \t return gridView;
\t }
\t @Override
\t public int getCount() {
\t \t return setOne.length;
\t }
\t @Override
\t public Object getItem(int position) {
\t \t return null;
\t }
\t @Override
\t public long getItemId(int position) {
\t \t return 0;
\t }
}
Просим полностью заполнить мероприятие_main.xml. В нем будет какое-то определение макета. Полный файл, пожалуйста. Этот файл определяет видимость этого TextView. – greenapps
Пожалуйста, добавьте 'toroid: text =" 12345678 "к этому TextView, чтобы увидеть, станет ли он видимым. И удалите эту видимость! – greenapps
Просто установите только первые 16 букв в MOBILE_OS. В противном случае ваш GridView станет большим. – greenapps