我已经为此工作了相当长的一段时间,但仍然无法做到这一点。我正在尝试创建一个简单的应用程序,允许用户手动将项目添加到列表中,并使用SharedPreferences永久存储项目。但我一直无法做到正确(我真的是编程btw的菜鸟)。谁能提出任何建议?非常感谢你!
public class CustomUsersAdapter extends ArrayAdapter<User> {
public CustomUsersAdapter(Context context, ArrayList<User> users) {
super(context, 0, users);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
User user = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.memolist, parent, false);
}
// Lookup view for data population
TextView tvName = (TextView) convertView.findViewById(R.id.tvName);
TextView tvdate = (TextView) convertView.findViewById(R.id.date);
TextView indexview = (TextView) convertView.findViewById(R.id.indexnumber);
// Populate the data into the template view using the data object
int sequence = position +1;
user.index = String.valueOf(sequence);
SharedPreferences sharedpref = PreferenceManager.getDefaultSharedPreferences(getContext());
String name = sharedpref.getString("JSON", "");
try {
JSONObject object = new JSONObject(name);
user.name = object.getString("Name");
user.date= object.getString("Category");
indexview.setText(user.index);
tvName.setText(user.name);
tvdate.setText(user.date);
} catch (JSONException e) {
e.printStackTrace();
}
// Return the completed view to render on screen
return convertView;
}
所以在这里,我正在尝试使用自定义数组适配器创建一个列表视图,并且在按下Button ManualAddDemo后,它将导航到另一个页面,用户可以在其中输入他们想要的任何内容,并且他们输入的内容将被解析为主要活动(以及另一个字符串的日期)。在这样做之后,我尝试将两个字符串放入JSONObject中,然后将其保存在共享首选项中。然后我在customarrayadapter中检索数据,这样每次加载listview时,都会检索数据。
public class User {
public String name;
public String date;
public String index;
public User( String index, String name, String date) {
this.index = index;
this.name = name;
this.date = date;
}
public static ArrayList<User> getUsers() {
ArrayList<User> users = new ArrayList<>();
return users;
}
}
我的用户类:
while
}
有什么建议吗? Tqvm!
答案 0 :(得分:0)
如评论中所述:
首先,在自定义适配器类中声明构造函数,如
CustomAdapter adapter = new CustomAdapter(this, infoList);
在MainActivity中调用构造函数:
var w = window.open('yourfile.txt'); //Required full file path.
w.print();
答案 1 :(得分:0)