Ich bin ein Sudoku in Android bauen, so wie melde ich alle Textviews für zB:Wie registriere ich 81 Textansichten in Android?
button1=(Button)findViewByid(R.id.btn1)
Do i 81, derartige Aussagen schreiben müssen alle TextView
Ich bin ein Sudoku in Android bauen, so wie melde ich alle Textviews für zB:Wie registriere ich 81 Textansichten in Android?
button1=(Button)findViewByid(R.id.btn1)
Do i 81, derartige Aussagen schreiben müssen alle TextView
Sie haben sich nicht registrieren um IDs dafür zu verwenden. Sie können einfach eine Ansicht (Container) in XML erstellen und sie vollständig mit einer for-Schleife füllen, ohne IDs zu verwenden. Sie können danach über ihren Index im Container auf sie zugreifen.
Ich hoffe, das hat geholfen.
Sie Rasteransicht mit einem Adapter
Rasterelement
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="@string/country_name"
android:textColor="@color/accent_color"
android:gravity="center"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:background="@color/color_primary_dark"/>
</RelativeLayout>
Adapter Klasse
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> {
private List<ItemObject> itemList;
private Context context;
public RecyclerViewAdapter(Context context, List<ItemObject> itemList) {
this.itemList = itemList;
this.context = context;
}
@Override
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, null);
RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView);
return rcv;
}
@Override
public void onBindViewHolder(RecyclerViewHolders holder, int position) {
holder.textView.setText(itemList.get(position).getName());
}
@Override
public int getItemCount() {
return this.itemList.size();
}
public class RecyclerViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener{
public TextView textView;
public RecyclerViewHolders(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
textView = (TextView)itemView.findViewById(R.id.textView);
}
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "Clicked Position = " + getPosition(), Toast.LENGTH_SHORT).show();
}
}
}
Aktivitätsklasse
public class MainActivity extends ActionBarActivity {
private GridLayoutManager lLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle(null);
Toolbar topToolBar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(topToolBar);
topToolBar.setLogo(R.drawable.logo);
topToolBar.setLogoDescription(getResources().getString(R.string.logo_desc));
List<ItemObject> rowListItem = getAllItemList();
lLayout = new GridLayoutManager(MainActivity.this, 4);
RecyclerView rView = (RecyclerView)findViewById(R.id.recycler_view);
rView.setHasFixedSize(true);
rView.setLayoutManager(lLayout);
RecyclerViewAdapter rcAdapter = new RecyclerViewAdapter(MainActivity.this, rowListItem);
rView.setAdapter(rcAdapter);
}
private List<ItemObject> getAllItemList(){
List<ItemObject> allItems = new ArrayList<ItemObject>();
allItems.add(new ItemObject("1");
allItems.add(new ItemObject("2");
allItems.add(new ItemObject("3");
return allItems;
}
}
können Sie anstelle von Textansichten verwenden Fügen Sie die Ansichten in Java-Code hinzu, wenn die Anwendung ausgeführt wird.
Sie können die XML-Anweisung Ihrer Textansicht nur in eine XML-Datei schreiben und sie dann aufblasen.
Auf diese Weise brauchen Sie die View-ID nicht, da Sie bereits eine Referenz haben.
grid.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
MyActivity.java
ArrayList<TextView> list = new ArrayList<>();
for (int i = 0; i < 81; i++) {
TextView view = (TextView)LayoutInflater.from(ItemDragAndSwipeUseActivity.this).inflate(R.layout.grid, null);
list.add(view);
}
// then attach these views to the layout with addView()
Sie bitte Ihre Frage verbessern - es ist ein wenig verwirrend, weil Sie 'TextView's sprechen und noch Ihr Codebeispiel wird' Knopf 's? In jedem Fall sollten Sie versuchen, all diese 'TextView's /' Buttons hinzuzufügen und zu sehen, was passiert. Idealerweise sollten Sie 'OnClickListener' in der Layout-XML-Datei definieren, so dass Sie' findViewById (Ressourcen-ID) 'nicht benötigen, es sei denn, es gibt einen zwingenden Grund dafür. – ishmaelMakitla
Nur 'TextView's ?? .. Nur aus Neugier, wie planen Sie dann die Nummer ins Grid einzugeben? – Sanoop
Warum nicht mit einfacheren Tutorials beginnen? – Eiko