2017-06-06 4 views
0

Ich habe eine ListView, die WLAN-Einstellungen anzeigt. Jedes Element in meiner Ansicht hat eine Schaltfläche, mit der die Sichtbarkeit des Passworts sichtbar oder unsichtbar eingestellt werden kann. Ich kann das Passwort sichtbar machen, aber nicht zurück. Dies ist mein Code:In ListVieu mit benutzerdefiniertem Adapter das Passwort sichtbar/unsichtbar setzen

Customlistadapter

package com.app.wifibackup; 
import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.CheckBox; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.app.wifibackup.R; 

import java.security.acl.Owner; 
import java.util.regex.Pattern; 

import static android.R.attr.label; 

class CustomListAdapter extends ArrayAdapter<String> { 

    final Context context = getContext(); 

    String ssid; 
    String password; 
    String owner; 
    String comment; 
    String location; 
    String provider; 

    Boolean showPwd = false; 
    String hiddenPassword = ""; 
    String bulletChar = "\u2022"; 
    String passwordToShow; 


    public CustomListAdapter(Context context, String[] dataListFinal) { 
     super(context, R.layout.listitem_wifilist ,dataListFinal); 
    } 
    public String allElementsAdapter = ""; 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 


     LayoutInflater iteminflater = LayoutInflater.from(getContext()); 
     View customView = iteminflater.inflate(R.layout.listitem_wifilist, parent, false); 

     ImageView image = (ImageView) customView.findViewById(R.id.list_icon_provider); 
     TextView textViewSsid = (TextView) customView.findViewById(R.id.list_item_datalist_textview_ssid); 
     final TextView textViewPassword = (TextView) customView.findViewById(R.id.list_item_datalist_textview_password); 
     TextView textViewOwner = (TextView) customView.findViewById(R.id.list_item_datalist_textview_owner); 

     final String singleListItem = getItem(position); 
     final String[] singleListItemArray = singleListItem.split("\t"); 
     final String id = singleListItemArray[0]; 
     ssid = singleListItemArray[1]; 
     password = singleListItemArray[2]; 
     owner = singleListItemArray[3]; 
     comment = singleListItemArray[4]; 
     location = singleListItemArray[5]; 
     provider = singleListItemArray[6]; 

     ImageButton imagebuttonEdit = (ImageButton) customView.findViewById(R.id.imageButton_edit); 
     ImageButton imagebuttonSetVisibility = (ImageButton) customView.findViewById(R.id.imageButton_setPasswordVisibility); 

     allElementsAdapter = id + ssid + password + owner + comment + location + provider; 

     switch (provider) { 
      case "empty": 
       image.setImageResource(R.drawable.icon_provider_dummy); 
       break; 
      case "FritzBox": 
       image.setImageResource(R.drawable.icon_provider_fritzbox); 
       break; 
      case "Speedport": 
       image.setImageResource(R.drawable.icon_provider_speedport); 
       break; 
      case "Unitymedia": 
       image.setImageResource(R.drawable.icon_provider_unitymedia); 
       break; 
     } 

     String ownerString = owner; 

     textViewSsid.setText(ssid); 

     textViewPassword.setText(setPasswordInvisibile(password)); 
     textViewOwner.setText(ownerString); 


     imagebuttonEdit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       String [] tmpDataArray = singleListItem.split("\t"); 
       ((MainActivity)context).openDialog("Edit", tmpDataArray); 
      } 
     }); 

     imagebuttonSetVisibility.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       String [] tmpDataArray = singleListItem.split("\t"); 
       if (!showPwd){ 
        showPwd = true; 
        textViewPassword.setText(setPasswordInvisibile(tmpDataArray[2])); 
       } 
       if (showPwd){ 
        showPwd = false; 
        textViewPassword.setText(tmpDataArray[2]); 
       } 
      } 
     }); 

     return customView; 
    } 

    private String setPasswordInvisibile(String pwd){ 
     int passwordLength = pwd.length(); 

     StringBuilder builder = new StringBuilder(); 
     for (int i = 0; i < passwordLength; i++) { 
      builder.append(bulletChar); 
      passwordToShow = builder.toString(); 
     } 

     return passwordToShow; 
    } 
} 

Haben Sie einige Vorschläge für mich?

+0

haben Sie es geschafft, Ihr Problem zu überwinden? – Akis

+1

Ja, ich habe es gelöst. Wird die volle Antwort später veröffentlichen, wenn ich zu Hause bin. Das Problem mit Ihrer Antwort war, dass die Variable showPwd zurückgesetzt wird, wenn ich auf ein anderes Listenansichtselement klicke. Also habe ich zwei identische Bildbuttons erstellt, die das Passwort sichtbar/unsichtbar setzen. Ein Klick auf den einen Knopf verbirgt den anderen. Aber danke für deine Hilfe;) – Rastaman

Antwort

0

die beiden, wenn die Bedingungen ausgeführt werden, so dass Sie die zweite, wenn zu anderen wechseln:

if (!showPwd) { 
    showPwd = true; 
    textViewPassword.setText(setPasswordInvisibile(tmpDataArray[2])); 
} else { 
    showPwd = false; 
    textViewPassword.setText(tmpDataArray[2]); 
} 
Verwandte Themen