Ich versuche, programmgesteuert einen Rahmen zu bestimmten Zeilenelementen in einem ArrayAdapter hinzuzufügen, der in einem AlertDialog angezeigt wird. Grundsätzlich möchte ich dies nehmen:Android programmgesteuert Rahmen zu ArrayAdapter in AlertDialog hinzufügen
Und es so machen (so platzieren weiße Ränder auf der linken und rechten Seite der Ansichten für bestimmte Zeilen, schwarzen Rand oben VARIABLE ):
Hier ist der Code. Dies ist nur debu Code, also keine Sorge zu viel über Effizienz, da sie nur lokal ausgeführt werden und nur für die Fehlersuche:
public class RuleDebugItemAdapter extends ArrayAdapter<RuleDebugItem> {
Context mContext;
int mLayoutResourceId;
ArrayList<RuleDebugItem> mData;
public RuleDebugItemAdapter(Context context, int resource, ArrayList<RuleDebugItem> data) {
super(context, resource, data);
mContext = context;
mLayoutResourceId = resource;
mData = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
TextView tv = (TextView) v.findViewById(android.R.id.text1);
RuleDebugItem item = mData.get(position);
tv.setSingleLine(false);
if (item.type.equalsIgnoreCase(Field.VARIABLE)) {
tv.setText(item.ruleDebugText);
tv.setTextSize(18);
tv.setTypeface(null, Typeface.BOLD);
v.setBackgroundColor(ContextCompat.getColor(mContext,android.R.color.white));
tv.setTextColor(ContextCompat.getColor(mContext,android.R.color.black));
}
else if (item.type.equalsIgnoreCase(Field.FORMRULE)) {
tv.setText(item.ruleDebugText);
tv.setTextSize(18);
tv.setTypeface(null, Typeface.BOLD);
v.setBackgroundColor(ContextCompat.getColor(mContext,android.R.color.white));
tv.setTextColor(ContextCompat.getColor(mContext,android.R.color.black));
}
else if (item.type.equalsIgnoreCase(Field.CONDITION_BLOCK)) {
tv.setText(item.ruleDebugText);
tv.setTextSize(18);
tv.setTypeface(null, Typeface.BOLD);
v.setBackgroundColor(ContextCompat.getColor(mContext,android.R.color.holo_orange_light));
tv.setTextColor(ContextCompat.getColor(mContext,android.R.color.white));
}
else if (item.type.equalsIgnoreCase(Field.FUNCTION)) {
tv.setTextSize(16);
if (item.success) {
v.setBackgroundColor(ContextCompat.getColor(mContext,android.R.color.holo_green_light));
tv.setText(Field.SPACE + item.ruleDebugText);
}
else {
v.setBackgroundColor(ContextCompat.getColor(mContext,android.R.color.holo_blue_bright));
tv.setText("Init " + item.ruleDebugText);
}
tv.setTypeface(null, Typeface.BOLD);
tv.setTextColor(ContextCompat.getColor(mContext,android.R.color.white));
}
else if (item.type.equalsIgnoreCase(Field.ACTION)) {
tv.setTextSize(16);
if (item.success) {
v.setBackgroundColor(ContextCompat.getColor(mContext,android.R.color.holo_green_light));
tv.setText(Field.SPACE + item.ruleDebugText);
}
else {
v.setBackgroundColor(ContextCompat.getColor(mContext,android.R.color.holo_blue_bright));
tv.setText("Pre-" + item.ruleDebugText);
}
tv.setTypeface(null, Typeface.BOLD);
tv.setTextColor(ContextCompat.getColor(mContext,android.R.color.white));
}
else if (item.type.equals(Field.CONDITION)) {
tv.setText(item.ruleDebugText);
tv.setTextSize(16);
tv.setTypeface(null, Typeface.NORMAL);
if (item.success)
v.setBackgroundColor(ContextCompat.getColor(mContext,android.R.color.holo_green_light));
else
v.setBackgroundColor(ContextCompat.getColor(mContext,android.R.color.holo_red_light));
tv.setTextColor(ContextCompat.getColor(mContext,android.R.color.white));
}
return v;
}
}
Alle in dem Bemühen, ein bisschen besser lesbar zu machen. Ja, ich weiß, die Farben sind hässlich und ich könnte stattdessen einen Baum machen .. :)
Danke, ich werde es versuchen und sehen, was passiert. –