gpt4 book ai didi

java - 如何将 boolean 值从主 Activity 发送到基本适配器

转载 作者:行者123 更新时间:2023-12-02 14:23:20 25 4
gpt4 key购买 nike

这是我的 MainActivity.java :

public class MainActivity extends AppCompatActivity {

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance ();
DatabaseReference databaseReference = firebaseDatabase.getReference ();
private JazzyListView listView;
int check=0;
MyAdapter adapter;
ProgressDialog progressDialog;
List<String> ListString = new ArrayList<String> ();
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main22);
final PullToRefreshView pullToRefreshView=(PullToRefreshView) findViewById (R.id.pull);
pullToRefreshView.setOnRefreshListener (new PullToRefreshView.OnRefreshListener () {
@Override
public void onRefresh() {
ListString.clear ();
databaseReference.addValueEventListener (new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
DataSnapshot snapshot = dataSnapshot.child ("User");
for(DataSnapshot s: snapshot.getChildren ())
{
if(s.getValue ().toString ().isEmpty ())
Toast.makeText (MainActivity.this, "Empty", Toast.LENGTH_SHORT).show ();
else
ListString.add(s.getKey ().toString ());
}
adapter.notifyDataSetChanged ();
pullToRefreshView.setRefreshing (false);
}

@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText (MainActivity.this, databaseError.getMessage (), Toast.LENGTH_SHORT).show ();
}
});
}
});
Connectivity connectivity = new Connectivity (MainActivity.this);
if(connectivity.isConnected ()){
progressDialog = new ProgressDialog (MainActivity.this);
progressDialog.setCancelable (false);
progressDialog.setMessage ("Loading");
progressDialog.setTitle ("Retrieving Data");
progressDialog.show ();
ListString.add ("Adding");
adapter = new MyAdapter (MainActivity.this, ListString);
databaseReference.addValueEventListener (new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
check++;
if(check<=1) {
ListString.remove ("Adding");
DataSnapshot snapshot = dataSnapshot.child ("User");
for(DataSnapshot s: snapshot.getChildren ())
{
if(s.getValue ().toString ().isEmpty ())
Toast.makeText (MainActivity.this, "Empty", Toast.LENGTH_SHORT).show ();
else
ListString.add(s.getKey ().toString ());
}
progressDialog.dismiss ();
adapter.notifyDataSetChanged ();
}else{

}
}

@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText (MainActivity.this, databaseError.getMessage (), Toast.LENGTH_SHORT).show ();
}
});
}else{
AlertDialog.Builder builder = new AlertDialog.Builder (MainActivity.this);
builder.setTitle("No Network")
.setMessage ("No Network Available").setPositiveButton ("Ok", new DialogInterface.OnClickListener () {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss ();
}
}) ;
AlertDialog alertDialog = builder.create ();
alertDialog.show ();
}

listView = (JazzyListView) findViewById (R.id.listview);
listView.setTransitionEffect (new FadeEffect ());
listView.setAdapter (adapter);
//adapter.notifyDataSetChanged ();
listView.setOnItemClickListener (new AdapterView.OnItemClickListener () {
@Override
public void onItemClick(final AdapterView<?> adapterView, final View view, int i, long l) {
final String itemname = adapterView.getItemAtPosition (i).toString ();
try{
AlertDialog.Builder builder = new AlertDialog.Builder (MainActivity.this);
builder.setTitle("Present?")
.setMessage ("Present or Absent:").setPositiveButton ("Present", new DialogInterface.OnClickListener () {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
try{
//view.setBackgroundColor (getColor (android.R.color.holo_green_light));
Calendar calendar = Calendar.getInstance ();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("dd MMM yyyy");
DatabaseReference user = databaseReference.child ("Attendence");
DatabaseReference date = user.child (simpleDateFormat.format (calendar.getTime ()));
DatabaseReference name = date.child (itemname);
name.setValue ("Present");
}catch (Exception e){
Toast.makeText (MainActivity.this, e.getMessage (), Toast.LENGTH_SHORT).show ();
}
}
}).setNegativeButton ("Absent", new DialogInterface.OnClickListener () {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Calendar calendar = Calendar.getInstance ();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("dd MMM yyyy");
DatabaseReference user = databaseReference.child ("Attendence");
DatabaseReference date = user.child (simpleDateFormat.format (calendar.getTime ()));
DatabaseReference name = date.child (itemname);
name.setValue ("Absent");
}
});
AlertDialog alertDialog = builder.create ();
alertDialog.show ();
}catch (Exception e){
Toast.makeText (MainActivity.this, e.getMessage (), Toast.LENGTH_SHORT).show ();
}
}
});

}
}

这是我的 MyAdapter.java 文件:

public class MyAdapter extends BaseAdapter{

List thisList;
Context thiscontext;
LayoutInflater inflater;
public MyAdapter(Context context,List list) {
thiscontext = context;
thisList = list;
inflater= (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
return thisList.size ();
}

@Override
public Object getItem(int i) {
return thisList.get (i);
}

@Override
public long getItemId(int i) {
return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = inflater.inflate (R.layout.list_main, null);
TextView textView = (TextView) view.findViewById (R.id.textView);
String upper = thisList.get (i).toString ().substring (0,1).toUpperCase () + thisList.get (i).toString ().substring (1);
TextView boxText = (TextView) view.findViewById (R.id.boxText);
TextView boxView = (TextView) view.findViewById (R.id.boxView);
String first = thisList.get (i).toString ().toUpperCase ().substring (0,1);
textView.setText (upper);
boxText.setText (first);
return view;
}
}

我想这样做,当用户单击列表项时,列表应通过 MainActivity.java 将当前值发送到 MyAdapter.java 类中的 boxView TextView,然后 boxView 应在每个项目中设置当前或不存在 ListView 。

最佳答案

首先,您首先在 MyAdapter 类中创建一个新的 boolean 变量。然后,您创建新方法 setPresent() 并使用它来设置您需要的 boolean 值。

您的代码已更改:

Activity 中

builder.setTitle("Present?")
.setMessage ("Present or Absent:").setPositiveButton ("Present", new DialogInterface.OnClickListener () {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
try{
//view.setBackgroundColor (getColor (android.R.color.holo_green_light));
Calendar calendar = Calendar.getInstance ();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("dd MMM yyyy");
DatabaseReference user = databaseReference.child ("Attendence");
DatabaseReference date = user.child (simpleDateFormat.format (calendar.getTime ()));
DatabaseReference name = date.child (itemname);
name.setValue ("Present");
adapterView.updateView(true, i); // to get the present value form your alert;

}catch (Exception e){
Toast.makeText (MainActivity.this, e.getMessage (), Toast.LENGTH_SHORT).show ();
}
}
}).setNegativeButton ("Absent", new DialogInterface.OnClickListener () {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Calendar calendar = Calendar.getInstance ();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("dd MMM yyyy");
DatabaseReference user = databaseReference.child ("Attendence");
DatabaseReference date = user.child (simpleDateFormat.format (calendar.getTime ()));
DatabaseReference name = date.child (itemname);
name.setValue ("Absent");
adapterView.updateView(false, i); // to get the absent value form your alert;

}
});

在你的适配器中;

 public class MyAdapter extends BaseAdapter{
List thisList;
Context thiscontext;
LayoutInflater inflater;
public MyAdapter(Context context,List list) {
thiscontext = context;
thisList = list;
inflater= (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
return thisList.size ();
}

@Override
public Object getItem(int i) {
return thisList.get (i);
}

@Override
public long getItemId(int i) {
return i;
}
// new method

private void updateView(Boolean value, int index){
View v = thisList.getChildAt(index -
thisList.getFirstVisiblePosition());

if(v == null)
return;

TextView boxView = (TextView) v.findViewById (R.id.boxView);
if (value && value != null) {
boxView.setText("Present");
} else if (!value && value !=null) {
boxView.setText("Absent");
}

}

        @Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = inflater.inflate (R.layout.list_main, null);
TextView textView = (TextView) view.findViewById (R.id.textView);
String upper = thisList.get (i).toString ().substring (0,1).toUpperCase () + thisList.get (i).toString ().substring (1);
TextView boxText = (TextView) view.findViewById (R.id.boxText);
TextView boxView = (TextView) view.findViewById (R.id.boxView);
String first = thisList.get (i).toString ().toUpperCase ().substring (0,1);
textView.setText (upper);
boxText.setText (first);
return view;
}
}

设置值后,您应该通知适配器该行发生了更改。就是这样 !您传递了 boolean 值。

关于java - 如何将 boolean 值从主 Activity 发送到基本适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com