gpt4 book ai didi

以编程方式使用edittext的android微调器

转载 作者:行者123 更新时间:2023-11-29 20:27:57 24 4
gpt4 key购买 nike

我需要在我的应用程序中有一个支持用户输入新选项的微调器。有谁知道如何在 Android 上支持它。

最佳答案

接下来的代码表示一个带有静态[ADD MORE]元素的Spinner,当选择该元素时,代码调用自定义InputBoxDialogFragment 制作,然后返回输入的文本并将其广告到适配器项目。

MainActivity.java

import android.app.Activity;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements cAdditionals.myIBFragment.YesNoListener {

@Override
public void onInputBoxYes() {
arr.remove("[ADD MORE]");
arr.add(cAdditionals.myIBFragment.received_text);
arr.add("[ADD MORE]");
adapter = new elAdapter(this, arr);
spnMain.setAdapter(adapter);
}

@Override
public void onInputBoxNo() {
//ON DISMISS
}

Spinner spnMain;
ArrayAdapter<CharSequence> adapter;
ArrayList<CharSequence> arr;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spnMain = (Spinner) findViewById(R.id.spnMain);

arr = new ArrayList<>();
arr.add("[ADD MORE]");

adapter = new elAdapter(this, arr);
spnMain.setAdapter(adapter);
}

public class elAdapter extends ArrayAdapter<CharSequence> {
private final ArrayList<CharSequence> ellist;
private final Activity context;

public elAdapter(Activity context, ArrayList<CharSequence> list) {
super(context, R.layout.row, list);
this.context = context;
this.ellist = list;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.row, parent, false);

TextView tvTitle = (TextView) rowView.findViewById(R.id.tvLabel);
tvTitle.setText(ellist.get(position));

return rowView;
}

public View getDropDownView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.row, parent, false);
final TextView tv = (TextView) rowView.findViewById(R.id.tvLabel);
tv.setText(ellist.get(position));

tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (tv.getText().toString().equals("[ADD MORE]")) {
cAdditionals.myIBFragment.message = "bla bla bla";
new cAdditionals.myIBFragment().show(getFragmentManager(), "tag");
}
}
});
return rowView;
}
}
}

cAdditionals.java

    import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.InputFilter;
import android.text.InputType;
import android.text.method.DigitsKeyListener;
import android.widget.EditText;

/**
* Created by Movsar Bekaev on 31/08/2015.
*/
public class cAdditionals {

public static class myIBFragment extends DialogFragment {
public static String message = "", received_text = "";

public interface YesNoListener {
void onInputBoxYes();
void onInputBoxNo();
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (!(activity instanceof YesNoListener)) {
throw new ClassCastException(activity.toString() + " must implement YesNoListener");
}
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final EditText input = new EditText(getActivity());

return new AlertDialog.Builder(getActivity())
.setTitle(message)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
received_text = input.getText().toString().trim();
((YesNoListener) getActivity()).onInputBoxYes();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((YesNoListener) getActivity()).onInputBoxNo();
}
})
.setView(input)
.create();
}

@Override
public void onCancel(DialogInterface dialog) {
((YesNoListener) getActivity()).onInputBoxNo();
super.onCancel(dialog);
}
}
}

行.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="New Text"
android:id="@+id/tvLabel"
android:layout_gravity="center_horizontal" />
</LinearLayout>

关于以编程方式使用edittext的android微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32312723/

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