B
Blender4Me
Neues Mitglied
- 0
Moin, ich habe mich mittlerweile durch sämtliche Foren gelesen, aber nie eine wirklich passende Antwort gefunden.
Ich würde gerne eine Erkennung haben, welche TextView ich "geswiped" habe in einer ListView. Ich habe einen Code gefunden, aber der erkennt angeblich nur die gesammte ListView, und nicht die einzelnen Elemente (Außerdem bin ich mir nichtmal sicher wie genau ich den Code einbaue):
Gefundener Code:
Meine Mainactivity:
Was ich eigentlich möchte:
Ich möchte den onLongClick mit dem Swipe ersetzeten/Beide sollen erhalten sein, da das ganze dann ordenlicher ist. Es wäre also sehr nett wenn mir einer eine gut erklärte Anleitung postet, oder mir hier direkt helfen könnte
(Ich bin momentan noch Einsteiger in Android, habe mich eher mit Java direkt befasst)
Ich würde gerne eine Erkennung haben, welche TextView ich "geswiped" habe in einer ListView. Ich habe einen Code gefunden, aber der erkennt angeblich nur die gesammte ListView, und nicht die einzelnen Elemente (Außerdem bin ich mir nichtmal sicher wie genau ich den Code einbaue):
Gefundener Code:
Code:
static final int DELTA = 50;
enum Direction {LEFT, RIGHT;}
...
ListView lvSimple = (ListView) findViewById(R.id.linLayout);
...
lvSimple.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event)
{
// TODO Auto-generated method stub
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
historicX = event.getX();
historicY = event.getY();
break;
case MotionEvent.ACTION_UP:
if (event.getX() - historicX < -DELTA)
{
FunctionDeleteRowWhenSlidingLeft();
return true;
}
else if (event.getX() - historicX > DELTA)
{
FunctionDeleteRowWhenSlidingRight();
return true;
} break;
default: return false;
}
return false;
}
});
Meine Mainactivity:
Code:
public class MainActivity extends Activity {
//Widgets
private Button addItem;
private Button refreshItem;
private Button loginMenu;
//Strings
private String addValue;
private String removeValue;
private String username;
private String password;
//Benutzername/Passwort speichern
private SharedPreferences saveLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//SharedPreferences laden
saveLogin = getApplicationContext().getSharedPreferences("login", 0);
loadPreferences();
//listView updaten/erstellen
readValues lo = new readValues();
lo.execute();
//removeItem
registerClickCallback();
//addItem
addItem = (Button) findViewById(R.id.addItem);
addItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openDialog();
}
});
//loginMenu
loginMenu = (Button) findViewById(R.id.loginMenu);
loginMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(i);
}
});
//refresh
refreshItem = (Button) findViewById(R.id.ButtonRefresh);
refreshItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadPreferences();
readValues lo = new readValues();
lo.execute();
Toast.makeText(MainActivity.this, "Einträge neugeladen!", Toast.LENGTH_LONG).show();
}
});
}
//getAddValue
private void openDialog(){
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Zur Einkaufsliste hinzufügen");
alert.setMessage(" ");
// Set an EditText view to get user input
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Bestätigen", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//Input verarbeiten
String addValueRaw = input.getText().toString();
try {
addValue = URLEncoder.encode(addValueRaw,"UTF-8");
} catch (UnsupportedEncodingException e) {
addValue = "";
}
addValue = addValue.replace(";", ":");
//addValues aufrufen
addValues lo = new addValues();
lo.execute();
}
});
alert.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
}
//getRememoveValue
private void registerClickCallback(){
ListView list = (ListView) findViewById(R.id.listView);
list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View viewClicked,
int position, long id) {
TextView textView = (TextView) viewClicked;
final String removeValueRaw = textView.getText().toString();
try {
removeValue = URLEncoder.encode(removeValueRaw,"UTF-8");
} catch (UnsupportedEncodingException e) {
removeValue = "";
}
removeValue = removeValue.replace(';', ':');
//Alert erstellen
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage(removeValue+" entfernen?")
.setCancelable(false)
.setPositiveButton("Ja", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
removeValues lo = new removeValues();
lo.execute();
Toast.makeText(MainActivity.this, removeValueRaw + " entfernt!", Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("Nein", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
AlertDialog alert = builder.create();
alert.show();
return false;
}
});
}
//listView updaten
private class readValues extends AsyncTask<Void, Void, String> {
private String[] values = null;
@Override
protected String doInBackground(Void... params) {
internetHandler ih = new internetHandler();
values = ih.getList(username,password,"","");
return null;
}
@Override
protected void onPostExecute(String result) {
//Liste konvertieren
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
R.layout.listview_item, //Genutztes Layout
values); //Genutzter Array
//listView einstellen
ListView list = (ListView) findViewById(R.id.listView);
list.setAdapter(adapter);
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
//addValues - InternetHandler
private class addValues extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
internetHandler ih = new internetHandler();
ih.getList(username,password,addValue,"");
readValues lo = new readValues();
lo.execute();
return null;
}
}
//removeValues - InternetHandler
private class removeValues extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
internetHandler ih = new internetHandler();
ih.getList(username,password,"",removeValue);
readValues lo = new readValues();
lo.execute();
return null;
}
}
//Username/Passwort auslesen
private void loadPreferences(){
if(saveLogin.getString("username", null)!=null && saveLogin.getString("password", null)!=null){
username = saveLogin.getString("username", null);
password = saveLogin.getString("password", null);
}else{
Intent i = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(i);
}
}
}
Was ich eigentlich möchte:
Ich möchte den onLongClick mit dem Swipe ersetzeten/Beide sollen erhalten sein, da das ganze dann ordenlicher ist. Es wäre also sehr nett wenn mir einer eine gut erklärte Anleitung postet, oder mir hier direkt helfen könnte
(Ich bin momentan noch Einsteiger in Android, habe mich eher mit Java direkt befasst)