T
T3tris
Neues Mitglied
- 0
Hallo,
ich bin relativ neu bei der Android App Entwicklung und habe bei meiner Appentwicklung ein kleines Problem mit dem floating context menu.
Ich habe bei meiner App ursprünglich mit einem LinearLayout gearbeitet, welches ich dynamisch per Code gefüllt/geleert habe.
Dies war aber recht hässlich Programmiert und beim Aufruf des Floating Context Menu wurde mir nie die selektierte View mitgegeben, was mir somit nichts gebracht hat.
Ein bekannter wies mich darauf hin, dass es sich lohnt mit ListViews zu arbeiten und dass dies bei ListViews funktioniert.
Daraufhin änderte ich meinen Code auf eine ListView (viel schöner und anhand eigener "Zeilenlayouts" natürlich viel schöner).
Nun funktioniert alles bis auf das Aufrufen des Context Menus. bzw. die Methode onCreateContextMenu(...){...} wird nicht ausgeführt und ich weiß nicht warum.
Mit dem ganz Normalen Optionsmenü funktioniert dies jedoch aber ich möchte das gerne mit dem floating context menu verwirklichen.
Beim Ausführen der App passiert also beim long click auf eine Zeile des Layouts nichts.
Mit eigenen OnLongClickListenern habe ich es auch schon versucht, aber das funktioniert auch nicht.
ich hoffe mir kann bei meinem Problem irgendjemand behilflich sein
Hier nun mein Code:
//--------------Die Haupt Activity-------------------------
//------------------Der ArrayAdapter für die ListView-------------------------------
//--------------Das Object SpielermitBewertung------------------------
//--------------Das XML Layout mit der ListView -------------------------------------------
//-----------Das XML Layout für die einzelnen Zeilen der ListView------------------------------
//---------------------------Das Context Menu--------------------------------------
ich bin relativ neu bei der Android App Entwicklung und habe bei meiner Appentwicklung ein kleines Problem mit dem floating context menu.
Ich habe bei meiner App ursprünglich mit einem LinearLayout gearbeitet, welches ich dynamisch per Code gefüllt/geleert habe.
Dies war aber recht hässlich Programmiert und beim Aufruf des Floating Context Menu wurde mir nie die selektierte View mitgegeben, was mir somit nichts gebracht hat.
Ein bekannter wies mich darauf hin, dass es sich lohnt mit ListViews zu arbeiten und dass dies bei ListViews funktioniert.
Daraufhin änderte ich meinen Code auf eine ListView (viel schöner und anhand eigener "Zeilenlayouts" natürlich viel schöner).
Nun funktioniert alles bis auf das Aufrufen des Context Menus. bzw. die Methode onCreateContextMenu(...){...} wird nicht ausgeführt und ich weiß nicht warum.
Mit dem ganz Normalen Optionsmenü funktioniert dies jedoch aber ich möchte das gerne mit dem floating context menu verwirklichen.
Beim Ausführen der App passiert also beim long click auf eine Zeile des Layouts nichts.
Mit eigenen OnLongClickListenern habe ich es auch schon versucht, aber das funktioniert auch nicht.
ich hoffe mir kann bei meinem Problem irgendjemand behilflich sein
Hier nun mein Code:
//--------------Die Haupt Activity-------------------------
Code:
public class SpielerlistActivity extends Activity {
private MyDataSource database;
ArrayList<SpielermitBewertung> spieler=new ArrayList<SpielermitBewertung>();
private SpielerlistArrayAdapter adapter;
private AlertDialog dialogspieleranlegen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spieler_list);
this.setDatabase(new MyDataSource(this));
this.getDatabase().open();
ListView lv=(ListView)findViewById(R.id.spielerlistListView);
this.spieler=this.database.getAllSpielermitBewertung();
adapter=new SpielerlistArrayAdapter(spieler,this);
lv.setAdapter(adapter);
lv.setClickable(true);
lv.setLongClickable(true);
registerForContextMenu(lv);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.spieler_list, menu);
return true;
}
//diese Funktion funktioniert ist aber kein Context menu
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.add_player) {
//... dies funktioniert
} else if (id == R.id.delete_player){
spieler.remove((spieler.size()-1));
adapter.notifyDataSetChanged();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.spieler_list_contextmenue, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int positionImArray=info.position;
switch (item.getItemId()) {
case R.id.SpielerlistContextmenueSpielerBearbeiten:
case R.id.SpielerlistContextmenueSpielerLoeschen:
SpielermitBewertung sp = this.spieler.get(positionImArray);
this.database.deleteSpielermitBewertung(sp.getId());
this.spieler.remove(sp);
this.adapter.notifyDataSetChanged();
return true;
default:
return super.onContextItemSelected(item);
}
}
private SpielerlistActivity getActivity() {
return this;
}
private MyDataSource getDatabase() {
return this.database;
}
private void setDatabase(MyDataSource myDataSource){
this.database=myDataSource;
}
}
Code:
public class SpielerlistArrayAdapter extends ArrayAdapter<SpielermitBewertung>{
private List<SpielermitBewertung> playerlist;
private Context context;
public SpielerlistArrayAdapter(List<SpielermitBewertung> playerList, Context ctx) {
super(ctx, R.layout.spieleruebersichtschema,playerList);
this.playerlist = playerList;
this.context = ctx;
}
public View getView (int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.spieleruebersichtschema, parent, false);
}
TextView vornametextview = (TextView) convertView.findViewById(R.id.spieleruebersichtschemavornametextView);
TextView nachnametextview = (TextView) convertView.findViewById(R.id.spieleruebersichtschemanachnametextview);
TextView bewertungstextview = (TextView) convertView.findViewById(R.id.spieleruebersichtschemabewertungstextview);
SpielermitBewertung p = playerlist.get(position);
vornametextview.setText(p.getVorname());
nachnametextview.setText(p.getNachname());
bewertungstextview.setText(p.getBewertung()+"");
convertView.setClickable(true);
convertView.setLongClickable(true);
return convertView;
}
}
//--------------Das Object SpielermitBewertung------------------------
Code:
public class SpielermitBewertung {
private long id;
private String vorname;
private String nachname;
private int bewertung;
public SpielermitBewertung(long id, String vorname, String nachname, int bewertung){
this.setId(id);
this.setVorname(vorname);
this.setNachname(nachname);
this.setBewertung(bewertung);
}
public String getVorname() {
return vorname;
}
public void setVorname(String name) {
this.vorname = name;
}
public String getNachname() {
return nachname;
}
public void setNachname(String name) {
this.nachname = name;
}
public int getBewertung() {
return bewertung;
}
public void setBewertung(int bewertung) {
this.bewertung = bewertung;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Override
public String toString() {
return "Spieler [Id=" + id + ", Vorname=" + vorname + ", Nachname=" + nachname + ", Bewertung=" + bewertung
+ "]";
}
}
Code:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/GridLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"
android:orientation="horizontal"
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="de.spielerlist.nr1.SpielerlistActivity" >
<ListView
android:id="@+id/spielerlistListView"
android:layout_gravity="fill_horizontal" >
</ListView>
<Space
android:layout_column="1"
android:layout_gravity="fill_vertical"
android:layout_row="1" />
</GridLayout>
Code:
<?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="wrap_content"
android:gravity="right"
android:orientation="horizontal" >
<CheckBox
android:id="@+id/spieleruebersichtschemacheckbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:textSize="15dp" />
<HorizontalScrollView
android:id="@+id/spieleruebersichtschemanamescrollview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="10dp"
android:layout_weight="1" >
<LinearLayout
android:id="@+id/spieleruebersichtschemascrollviewlinearlayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/spieleruebersichtschemavornametextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0"
android:text="vorname"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="15dp" />
<TextView
android:id="@+id/spieleruebersichtschemanachnametextview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_weight="0"
android:text="nachname"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="15dp" />
</LinearLayout>
</HorizontalScrollView>
<TextView
android:id="@+id/spieleruebersichtschemabewertungbeschreibungtextview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="5dp"
android:layout_weight="0"
android:text="@string/bewertungdoppelpunkt"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="15dp" />
<TextView
android:id="@+id/spieleruebersichtschemabewertungstextview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0"
android:text="0"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="15dp" />
</LinearLayout>
Code:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/SpielerlistContextmenueSpielerBearbeiten" android:title="@string/Spielerlist_Spielerbearbeiten_Menue"></item>
<item android:id="@+id/SpielerlistContextmenueSpielerLoeschen" android:title="@string/Spielerlist_Spielerloeschen_Menue"></item>
</menu>
Zuletzt bearbeitet von einem Moderator: